Linux

刪除舊記憶體文件 - 命令幫助

  • January 18, 2011

我正在嘗試編寫一個命令來幫助清除舊的記憶體資產文件。這些文件始終是.css、或.javascript,我想刪除所有超過 2 天的文件。.css.gzip``.javascript.gzip

我開始使用這個命令進行測試,然後再傳遞給exec rm

find /home/*/tmp/cache/* -mtime +2 -type f -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css'

這將返回我要刪除的所有文件,所以我添加rm了命令:

find /home/*/tmp/cache/* -mtime +2 -type f -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css' -exec rm {} \;

但是實際上沒有任何內容被刪除,我嘗試發出rm命令rm -i並且沒有提示,就好像實際上沒有任何內容被傳遞給 rm。

有任何想法嗎?

FWIW 這是在 CentOS 5 盒子上

問題是添加-exec ...到所有這些-o標誌的末尾會觸發 AND 與 OR 的優先級,例如它正在查找 *.css.gzip OR *.javascript.gzip OR .javascript OR (.css AND delete it ) 所以它只刪除 *.css 但找到所有其他文件但對它們不做任何事情。順便說一句,這也意味著您的類型和 mtime 標誌僅適用於 *.javascript.gzip。

採用

find /home/*/tmp/cache/* -mtime +2 -type f \( -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css' \) -exec rm {} \;

為了強制它使用 mtime +2 查找所有文件並鍵入 f AND(所有不同的文件名選項)並刪除它們。

要查看實際情況,請在您的版本和我的版本中將 -exec … 替換為 -print 並使用 ()。

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