Shell
刪除空目錄樹(刪除盡可能多的目錄但不刪除文件)
假設我有一個這樣的目錄樹:
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”。