400

从终端窗口:

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

如果我有一个嵌套了文件和文件夹的目录,其中包含文件等等,有没有办法删除所有文件和文件夹而无需输入所有费力的命令?

如果它有所作为,我使用的是来自终端的 Mac Bash shell,而不是 Microsoft DOS 或 Linux。

4

4 回答 4

895
rm -rf some_dir

-r "recursive" -f "force"(抑制确认消息)

当心!

于 2010-04-15T01:26:30.477 回答
76
rm -rf *

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

不过要小心!仅当您绝对确定您在正确的目录中时才执行此命令。

于 2010-04-15T01:27:30.307 回答
18

就在这里。该-r选项告诉rm它是递归的,并删除以其参数为根的整个文件层次结构;换句话说,如果给定一个目录,它将删除其所有内容,然后执行有效的rmdir.

您应该知道的另外两个选项是-i-f-i代表互动;它会rm在删除每个文件之前提示您。 -f代表力量;它继续并删除所有内容而无需询问。 -i更安全,但-f更快;仅当您绝对确定要删除正确的内容时才使用它。您可以指定-r或不指定这些;这是一个独立的设置。

和往常一样,您可以组合开关:rm -r -iis justrm -rirm -r -fis rm -rf

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

于 2010-04-15T01:31:54.620 回答
4

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

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

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

于 2014-04-25T18:33:08.090 回答