从终端窗口:
当我使用该rm
命令时,它只能删除文件。
当我使用该rmdir
命令时,它只会删除空文件夹。
如果我有一个嵌套了文件和文件夹的目录,其中包含文件等等,有没有办法删除所有文件和文件夹而无需输入所有费力的命令?
如果它有所作为,我使用的是来自终端的 Mac Bash shell,而不是 Microsoft DOS 或 Linux。
rm -rf some_dir
-r "recursive" -f "force"(抑制确认消息)
当心!
rm -rf *
将删除当前目录中的所有内容(文件夹和文件)。
不过要小心!仅当您绝对确定您在正确的目录中时才执行此命令。
就在这里。该-r
选项告诉rm
它是递归的,并删除以其参数为根的整个文件层次结构;换句话说,如果给定一个目录,它将删除其所有内容,然后执行有效的rmdir
.
您应该知道的另外两个选项是-i
和-f
。 -i
代表互动;它会rm
在删除每个文件之前提示您。 -f
代表力量;它继续并删除所有内容而无需询问。 -i
更安全,但-f
更快;仅当您绝对确定要删除正确的内容时才使用它。您可以指定-r
或不指定这些;这是一个独立的设置。
和往常一样,您可以组合开关:rm -r -i
is justrm -ri
和rm -r -f
is rm -rf
。
另请注意,您所学习的内容适用bash
于每个 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 {} \;
本质上,它使用正则表达式来选择要从结果中排除的目录,然后删除剩余的文件。