Cron
刪除目錄中除最後 20 個以外的所有文件
我有疑問,為什麼我的“刪除目錄中除最後 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,請參閱連結進行廣泛討論。