Linux
刪除超過 1 天的文件夾
我想使用以下命令刪除所有超過 1 天的文件夾:
find /test -mmin +1440 | xargs rm -rf
但是
find
列表的輸出/test
(並將相應地刪除它)。我怎樣才能只找到的子目錄
/test
?(-maxdepth
/-mindepth
在 AIX 中不可用)
正如@meuh 在他的評論中所說,您可以使用
/test/*
而不是/test
. 然後,您的命令可能類似於以下內容:find /test/* -type d -mmin +1440 | xargs rm -rf
在這種情況下,只會刪除的子文件夾。
/test
POSIXly:
find /test/. ! -name . -type d -mtime +0 -exec rm -rf {} \; -prune
(我們
-prune
用於我們成功刪除的目錄,這樣find
就不會抱怨它們突然消失了)。在任何情況下,請注意目錄文件的修改時間(
-mtime
如上所述)僅反映上次在其中添加、刪除或重命名條目的時間。當其中連結的任何文件(正常或目錄或其他類型)的內容被修改時,它不會更新。特別是,對子目錄或其內容所做的任何更改都不會影響目錄的修改時間。
請注意,所有
-mindepth
,-maxdepth
和-mmin
都是 GNU 擴展(儘管它們在其他一些實現中受支持)。的標準等價物
find . -maxdepth 1
是:find . -name . -o -prune
對於
-mindepth 1
:find . ! -name .
對於
-mindepth 1 -maxdepth 1
:find . ! -name . -prune
對於 以外的目錄
.
,請find some/dir/. ...
按上述方式使用。對於其他深度值,您可以使用
-path
,但請注意,由於它最近才被添加到標準中,因此某些系統(如 AIX)仍然沒有它。對於
-maxdepth 2
::find . ! -path '*/*/*' -o -prune
對於
-mindepth 2
::find . -path '*/*/*'
對於另一個目錄:
find some/dir//. -path '*//*/*/*'