如何在crontab中使用Perl刪除超過1天的目錄內容


1

如標題中所述,我正在嘗試刪除包含許多文件的目錄中超過一天的文件(實際上並未刪除所述目錄)-該目錄由遠程rsnapshot服務器備份,所以我不備份後就不再需要源文件了,問題在於

find /directory/* -mtime +1 -delete

給出錯誤" 參數列表太長",因為文件太多(它們甚至沒有那麼大,它只是來自安全攝像機動作的許多圖片和小視頻)軟件-順便說一句很棒;)

我偶然發現了可以與crontab一起使用的命令:

perl -e 'for(<~/test1/*>){((stat)[9]<(unlink))}'

但是我不太了解這個命令,因為我知道這是某種循環。實際上,它確實在我創建的測試目錄(顯然是test1)上工作,該目錄包含一堆比一天還年輕的測試文件,我不認為"大於"參數甚至在在這裡。

我該怎麼辦?如果不清楚,請隨時修改我的問題。

2

find is recursive. You don't need to do find /directory/*, just use:

find /directory/ -mtime +1 -delete

0

If find /directory/* -mtime +1 -delete does produce the right files but just too long a list, what about:

find /directory/* -mtime +1 | while read fName; do rm $fName;done

Or write the output to a file first and then process the file. Many roads lead to Rome... :)