Linux

刪除超過 1 天的文件夾

  • August 31, 2015

我想使用以下命令刪除所有超過 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 '*//*/*/*'

引用自:https://unix.stackexchange.com/questions/225803