recursion地删除具有详细输出的空文件夹

这应该是相当简单的,但我不知道我错过了什么。

我想recursion删除空的目录,并获得输出的东西被删除,这个命令肯定工作,但我不能打印详细的动作-excec。

while [ -n "$(find . -depth -type d -empty -exec rm -v -rf {} +)" ]; do :; done

通过recursion我的意思是,我想继续删除空文件夹,直到没有其他空文件夹。

 $ 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 $(...)但没有做任何事情与返回的输出,你可以把一个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'