gsk*_*lee 15 shell directory rm
假设我有一个这样的目录树:
ROOTDIR
?--SUBDIR1
?----SUBDIR2
?----SUBDIR3
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个命令,当我输入时:
$ [unknown command] ROOTDIR
Run Code Online (Sandbox Code Playgroud)
如果整个目录树中没有文件而只有目录,则可以删除整个目录树。但是,假设在 SUBDIR1 下是否有一个名为 hello.pdf 的文件:
ROOTDIR
?--SUBDIR1
?--hello.pdf
?----SUBDIR2
?----SUBDIR3
Run Code Online (Sandbox Code Playgroud)
那么该命令只能删除 SUBDIR2 及以下。
小智 28
find ROOTDIR -type d -empty -delete
Run Code Online (Sandbox Code Playgroud)
与...一样
find ROOTDIR -type d -depth -empty -exec rmdir "{}" \;
Run Code Online (Sandbox Code Playgroud)
但使用内置的“-delete”操作。
请注意,“-delete”意味着“-depth”。
小智 11
亚历克西斯很近。你需要做的是:
find . -type d -depth -empty -exec rmdir "{}" \;
Run Code Online (Sandbox Code Playgroud)
这将首先向下钻取目录树,直到找到第一个空目录,然后将其删除。从而使父目录为空,然后将被删除,等等。这将产生预期的效果(我可能每周这样做 10 次,所以我很确定这是正确的)。:-)