假设我有一个像这样的目录树:
ROOTDIR
└--SUBDIR1
└----SUBDIR2
└----SUBDIR3
我正在寻找一个命令,当我输入:
$ [unknown command] ROOTDIR
整个目录树可以被删除如果整个树中没有文件而只有目录。但是,假设 SUBDIR1 下是否有一个名为 hello.pdf 的文件:
ROOTDIR
└--SUBDIR1
└--hello.pdf
└----SUBDIR2
└----SUBDIR3
那么该命令必须只删除SUBDIR2及以下。
答案1
find ROOTDIR -type d -empty -delete
与...一样
find ROOTDIR -type d -depth -empty -exec rmdir "{}" \;
但使用内置的“-delete”操作。
请注意,“-delete”意味着“-深度”。
答案2
亚历克西斯很接近。你需要做的是这样的:
find . -type d -depth -empty -exec rmdir "{}" \;
这将首先向下钻取目录树,直到找到第一个空目录,然后将其删除。从而使父目录为空,然后将其删除,等等。这将产生所需的效果(我可能每周这样做 10 次,所以我很确定这是正确的)。 :-)
答案3
我会尝试这个:
find ROOTDIR -type d -depth -exec rmdir {} \;
答案4
rmdir $(find ROOTDIR -type d | sort -r)