Linux
find 和 rm 命令刪除了目錄內的文件和目錄本身
你能檢查一下這個命令嗎?它正在刪除文件和目前目錄本身。腳本通過 cron 執行。
目錄:
/log/dir/ /log/dir/tmp/
腳本中的命令:
find /log/dir/ -mtime +7 -name "*" -exec rm -rf {} \; find /log/dir/tmp -mtime +7 -name "*" -exec rm -rf {} \;
測試:執行
find /log/dir/ -mtime +7 -name "*"
檢查文件,我得到了結果。執行腳本後,文件被刪除。幾天后,文件夾也被刪除(目錄 in/log/dir/
和 tmp in/log/dir/tmp
)。預期應該只刪除超過 7 天提供的路徑內的文件/目錄。
Linux redhat6.5
如果您只想
find
刪除正常文件而不刪除目錄,請務必確保使用-type f
. 這將防止處理引用目錄(或任何非正常文件)的路徑名。自上次修改的時間戳滿足刪除條件後,目錄已被刪除。此外,如果您要刪除文件,請不要使用,
rm -r
因為遞歸到正常文件沒有意義。對於大多數find
實現,您還可以選擇使用-delete
而不是-exec rm
.這
-name "*"
是一個無操作並且可以被刪除,因為每個名稱都匹配*
。如果您執行 find over
/log/dir
,那麼您不需要執行它,/log/dir/tmp
因為後者將作為前者的一部分進行處理。如果您打算只查看這兩個目錄,而不是子目錄,請添加-maxdepth 1
到find
(如果它支持),在這種情況下,您確實需要單獨處理它們(但這可以在一次find
呼叫中完成,因為實用程序需要任意數量的頂級目錄)。建議,取決於您想要實現的目標:
find /log/dir /log/dir/tmp -maxdepth 1 -type f -mtime +7 -delete
當
mtime
從目錄中添加或刪除文件時,會更新目錄的 。因此,不清楚您嘗試根據上次修改的時間戳刪除目錄是否是一個好主意。對於日誌文件的輪換,您還可以
logrotate
從 cron 作業中查看使用或一些類似的實用程序。