Cron

刪除目錄中除最後 20 個以外的所有文件

  • June 5, 2014

我有疑問,為什麼我的“刪除目錄中除最後 20 個文件之外的所有文件”的 cmd 在 cron 中不起作用,但在命令提示符中是。

* * * * *  ls -1tr /home/testusr/test | head -n -20 | xargs -d '\n' rm -f  > /var/opt/check.log 2>&1

目錄包含假設 100x 文件,這些文件名為 DATA-20140605xxxx,每分鐘生成一次。

提前感謝您的任何回答。

您遇到的問題是因為您的 ls 命令的輸出不包含文件的路徑,它只包含文件名。當 cron 作業執行時,它會在使用者主目錄中執行,因此當您的 rm 執行時,它會在 /home/testuser 而不是 /home/testuser/test 中查找文件。

你可以用一個簡單的 cd 命令來解決這個問題

cd /home/testuser/test && ls -1tr /home/testusr/test ...

但是,這並不是很好,因為您正在解析 ls 的輸出,這是一個Bad Idea TM,請參閱連結進行廣泛討論。

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