Linux

查找/刪除不包含任何文件的頂級文件夾

  • November 3, 2010

我想刪除不包含任何文件但可以包含其他空(再次意味著不包含文件)目錄的頂級目錄。例如:

$ ls -R
.: foo/
./foo/: bar  bar1
./foo/bar/:
./foo/bar1/:

在這裡,我想刪除目錄foo/(及其子目錄)。起初,我想使用類似find . -type d -empty的搜尋,但由於 foo 包含目錄,它只找到較低級別的:

$ find . -type d -empty
./foo/bar
./foo/bar1

我想我可以循環直到find . -type d -empty什麼也沒找到,但我最終可能會擁有一個非常大的目錄結構,其中包含很多空目錄,我擔心這樣做會影響性能……

任何想法?

find . -depth -type d -empty應該做的伎倆。 -depth將導致 find 在目錄本身之前處理目錄的內容。

編輯:

大概你會-delete在這個發現的最後使用類似的東西,否則你會遇到你描述的同樣的問題。同樣值得注意的是,-delete實際上意味著-depth,所以真的,堅持find . -type d -empty -delete會給你你正在尋找的東西;假設您也可以刪除遇到的任何其他較低級別的空目錄。

引用自:https://serverfault.com/questions/197813