Shell脚本-查找:`-exec'缺少参数

时间:2018-08-15 13:28:43

标签: bash shell

我正在尝试运行此脚本:

alias logs="cd L:/"
find $logs -name '*system.log*' -mtime +14 -exec rm {} \;

但是得到这个错误:find:缺少`-exec'的参数。我尝试过查看与此相关的其他帖子,但无法正常工作。我正在使用cygwin在Windows上运行此脚本。

2 个答案:

答案 0 :(得分:0)

如果您创建了任何别名为log的别名,那么要使用它,您应该使用$logs而不是logs

此外,也许您正在使用的发现是Windows而不是Cygwin的发现。如果您键入“哪个发现”,这一点很清楚

答案 1 :(得分:0)

首先,一些小的修复程序:

#!/bin/sh
logs=/cygdrive/l
find "$logs" -name '*system.log*' -mtime +14 -exec rm -- {} +

...但是那些方法不能解决您的实际问题(导致-exec报告错误的问题),几乎可以肯定是脚本中存在DOS换行符。

find -exec在看不到仅包含确切字符串;的参数时报告有问题的错误。除引号外,\;应该是该参数-,但如果文件中包含隐藏字符,则可以不同。 DOS文本文件在需要UNIX文本文件的程序打开时似乎具有隐藏字符,因为这两种格式具有不同的行分隔符。

要解决此问题,请在本机UNIX编辑器(如vim)中打开文件,运行:set fileformat=unix并保存;或使用dos2unix进行就地转换。