sh脚本使用find和exec删除只是txt文件rm警告我缺lessexec参数

find /full/path/dir -name '*.txt' -exec /bin/rm {} \; 

shell里很好,但是用一个sh脚本和一些类似的线popup来,让它从cronjob每晚运行,它会报告:

 find: missing argument to `-exec' 

一切。 我可能在每一个组合都试过反斜杠和引号。 我怎样才能做这个工作?

您的脚本文件中可能有Windows行结束符。 尝试运行dos2unix来转换它们。

您可以在shell提示下使用以下命令重现此错误:

 $ find ... \;^M 

Ctrlv Ctrlm添加“^ M”的位置

我无法想象为什么

 find /full/path/dir -name '*.txt' -print0 | xargs -0 rm 

将无法工作。 为了testing你的cronjob,做这样的事情:

 find /full/path/to/dir -name '*.txt' -print0 | xargs -0 >/tmp/logfile 

这将只是回应xargs会删除到/tmp/logfile以便您可以手动检查。

这个错误发生在find不符合任何具有该条件的文件时,然后尝试用空栈执行rm,并返回该错误。

菲尔的build议是惊人的,所以请标记他! 🙂