Linux
刪除舊記憶體文件 - 命令幫助
我正在嘗試編寫一個命令來幫助清除舊的記憶體資產文件。這些文件始終是
.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 並使用 ()。