Bash
遞歸刪除具有詳細輸出的空文件夾
這應該相當簡單,但我不確定我錯過了什麼。
我想遞歸地刪除空目錄,並獲得被刪除內容的輸出,這個命令肯定有效,但我無法詳細列印 -excec 的操作。
while [ -n "$(find . -depth -type d -empty -exec rm -v -rf {} +)" ]; do :; done
遞歸我的意思是,我想繼續刪除空文件夾,直到沒有其他空文件夾。
$ tree . . ├── empty │ └── empty │ └── empty └── non-emty └── ko
此項目只會刪除樹中的一個空文件夾
$ find . -depth -type d -empty -exec rmdir -v {} + rmdir: removing directory, `./empty/empty'
您不需要 while 循環,您應該使用 rmdir -p 刪除空的父母
find . -depth -type d -empty -exec rmdir -v -p {} + rmdir: removing directory, `./1/3' rmdir: removing directory, `./1' rmdir: removing directory, `.' rmdir: failed to remove directory `.': Invalid argument rmdir: removing directory, `./2/3' rmdir: removing directory, `./2' rmdir: failed to remove directory `./2': Directory not empty
您看不到命令輸出的原因是您在子shell中執行它,
$(...)
但對返回的輸出不做任何事情,您可以在 subsell 之前放置一個 echo 以列印出它返回的內容echo $(find . -depth -type d -empty -exec rmdir -v -p {} +) rmdir: removing directory, `./1/3' rmdir: removing directory, `./1' rmdir: removing directory, `.' rmdir: removing directory, `./2/3' rmdir: removing directory, `./2'