我有一個包含幾TB文件的目錄。我想刪除其中14天以前的每個文件。在bash中查找超過X天的文件並刪除
我以爲我會用find . -mtime +13 -delete
。爲了確保命令按預期工作,我跑了find . -mtime +13 -exec /bin/ls -lh '{}' \; | grep '<today>'
。後者不應該返回任何內容,因爲在find
下使用-mtime +13
不能找到今天創建/修改的文件。但令我驚訝的是,find
只是列出了今天修改/創建的所有文件!
我有一個包含幾TB文件的目錄。我想刪除其中14天以前的每個文件。在bash中查找超過X天的文件並刪除
我以爲我會用find . -mtime +13 -delete
。爲了確保命令按預期工作,我跑了find . -mtime +13 -exec /bin/ls -lh '{}' \; | grep '<today>'
。後者不應該返回任何內容,因爲在find
下使用-mtime +13
不能找到今天創建/修改的文件。但令我驚訝的是,find
只是列出了今天修改/創建的所有文件!
這適用於我。
$ find ./folder_name/* -type f -mtime +13 -print | xargs rm -rf
'-r'開關沒用。此外,如果您的文件名包含空格或其他有趣的符號,則會遇到問題。如果您的實用程序支持它們,請使用'-print0'和'xargs -0 ...',否則使用@ Mindx的答案。或者,如果你的'find'支持它,使用'find'的'-delete'測試如下:'find ./folder_name -type f -mtime +13 -delete'。 –
雖然此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – gunr2171
你確定你還是別人沒有修改過這些文件嗎? –
查看'-daystart'選項。你的查找計數完全是24 * 13小時後,留下的文件可能是24 * 13 - 1分鐘,然後你的另一個發現將找到那些。 –
只是想通了!原因是'ls'。 'find'找到一個mtime +13的目錄,'ls'只需列出它的所有內容,無論文件有多少次(facepalm!)。 – user3040975