Shell

刪除空目錄樹(刪除盡可能多的目錄但不刪除文件)

  • July 8, 2014

假設我有一個這樣的目錄樹:

ROOTDIR
   └--SUBDIR1
       └----SUBDIR2
           └----SUBDIR3

我正在尋找一個命令,當我輸入時:

$ [unknown command] ROOTDIR

如果沒有文件但只有整個樹內的目錄,則可以刪除整個目錄樹。但是,假設在 SUBDIR1 下是否有一個名為 hello.pdf 的文件:

ROOTDIR
   └--SUBDIR1
       └--hello.pdf
       └----SUBDIR2
           └----SUBDIR3

然後該命令必須只刪除 SUBDIR2 及以下。

亞歷克西斯很近。你需要做的是:

find . -type d -depth -empty -exec rmdir "{}" \;

這將首先向下鑽取目錄樹,直到找到第一個空目錄,然後將其刪除。從而使父目錄為空,然後將其刪除,等等。這將產生預期的效果(我可能每週這樣做 10 次,所以我很確定它是正確的)。:-)

find ROOTDIR -type d -empty -delete

與…一樣

find ROOTDIR -type d -depth -empty -exec rmdir "{}" \;

但使用內置的“-delete”操作。

請注意,“-delete”意味著“-depth”。

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