Ubuntu

使用 find 和 exec 刪除 txt 文件的 sh 腳本 rm 警告我缺少 exec 的參數

  • January 27, 2011
find /full/path/dir -name '*.txt' -exec /bin/rm {} \;

在 shell 中很好,但在 sh 腳本中彈出它以及一些類似的行,讓它每晚從 cronjob 執行,它報告:

find: missing argument to `-exec'

關於一切。我可能在每種組合中都嘗試過反斜杠和引號。我怎樣才能使這項工作?

您的腳本文件中可能有 Windows 行尾。嘗試在其上執行dos2unix以轉換它們。

您可以在 shell 提示符下重現此錯誤:

$ find ... \;^M

通過按Ctrl- v Ctrl-添加“^M”的位置m

我無法想像為什麼

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

行不通。要測試您的 cronjob,請執行以下操作:

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

這只會回顯 xargs 將刪除的內容,/tmp/logfile以便您可以手動檢查。

引用自:https://serverfault.com/questions/227760