find . * -depth -print0 | xargs -0 rmdir
它递归地查找并删除所有空文件夹(包括隐藏的文件夹)。
我只在我的主文件夹和 Linux PC 中的随身碟上尝试过,它有效,但我不知道从 / 作为 root 运行是否安全
我曾经通过从互联网上运行一些命令(我不明白)来破坏我的操作系统。
答案1
页面man
上rmdir
写着:-
Remove the DIRECTORY(ies), if they are empty.
如果你想删除所有空目录那么它会是安全的。您需要问的问题是:-
你想删除吗全部空目录?
有些应用程序需要一个目录,即使它是空的。例如,journald
可以配置为仅记录到持久存储(如果/var/log/journald
存在)。如果您在该目录为空时运行命令,那么它将被删除。之后journald
将不会记录到持久存储,因为它找不到该目录。我相信 Fedora 默认情况下就是这样配置的。
此外,空的(未安装的)安装点也可以通过您的命令删除。它们应该很容易修复,但仍然可能让您陷入困境。
答案2
尽管此命令在大多数情况下可能是安全的,但在命令可以接受选项的地方使用是一个坏习惯*
,因为以破折号开头的文件名(由错误创建或由可能利用另一个错误的恶意人员创建)可能会被解释作为一个选项。正如有人所说,*
这里毫无意义,但您需要记住的是,特别是当以 root 身份运行命令时,您需要控制所有参数。一般来说,避免没有前缀的通配符(例如,代替*
,./*
通常更好)。另外,请小心文件名中的符号链接和空格......
答案3
find
将打印目录树中的所有文件和文件夹。xargs
运行提供的命令 -rmdir
对于 find 返回的每个元素。
rmdir
不会删除非空的文件夹,也不会删除文件 - 您可以尝试一下。mkdir
一个文件夹,touch
里面有一些文件,然后rmdir
在该文件夹上运行。rmdir
会抱怨这样的事情:rmdir: failed to remove ‘test’: Directory not empty
,或者rmdir: failed to remove ‘test.txt’: Not a directory
所以是的,它应该是完全安全的。如果您想测试,您可以使用mkdir
和创建一组测试文件夹,touch
看看它是否符合您的预期。
另外,有关rmdir
- 以及 *nix 中几乎所有命令的更多信息,请运行man <command>
.