从终端窗口:

当我使用rm命令时,它只能删除文件。 当我使用rmdir命令时,它只删除空文件夹。

如果我有一个包含文件和文件夹的目录,那么是否有一种方法可以删除所有的文件和文件夹,而不需要费力地输入命令?

如果有区别的话,我在终端上使用Mac Bash shell,而不是Microsoft DOS或Linux。


rm -rf some_dir

- r“递归” -f "force"(禁止确认信息)

小心!

rm -rf *

将删除当前目录中的所有(文件夹和文件)。

但是要小心!只有在绝对确定处于正确目录时才执行此命令。

是的,有。-r选项告诉rm是递归的,并删除基于其参数的整个文件层次结构;换句话说,如果给定一个目录,它将删除其中的所有内容,然后执行实际上是rmdir的操作。

您应该知道的另外两个选项是-i和-f。-i代表交互;它使rm在删除每个文件之前提示您。-f代表力;它会自动删除所有内容。-i更安全,但-f更快;只有在你绝对确定你删除的内容是正确的情况下才使用它。你可以用-r或不指定;这是一个独立的设定。

和往常一样,你可以组合开关:rm -r -i等于rm -ri, rm -r -f等于rm -rf。

还要注意,您正在学习的内容适用于所有Unix操作系统:OS X、Linux、FreeBSD等。事实上,rm的语法在每个Unix操作系统的每个shell中都是相同的。OS X实际上是一个BSD Unix系统。

我正在寻找一种方法来删除一个目录中的所有文件,除了一些目录和文件,我想保持在周围。我设计了一种方法来使用find:

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

本质上,它使用regex来选择要从结果中排除的目录,然后删除剩余的文件。