删除空目录树(删除尽可能多的目录但不删除文件)

删除空目录树(删除尽可能多的目录但不删除文件)

假设我有一个像这样的目录树:

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)

相关内容