这应该是相当简单的,但我不知道我错过了什么。
我想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'