如何通过终端快速删除文件和目录(bash shell)

从终端窗口:

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

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

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

650574 次浏览
rm -rf some_dir
< p > - r“递归” -f "force"(禁止确认信息)

小心!

rm -rf *

会删除所有东西(文件夹&文件)在当前目录。

但是要小心!只有在你绝对确定你在正确的目录下才执行这个命令。

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

另外两个你应该知道的选项是-i-f-i代表__abc8 interactive;它使rm在删除每个文件之前提示你。-f代表force;它会自动删除所有内容。-i更安全,但-f更快;只有当你是-f0,你删除正确的东西时才使用它。你可以用-r来指定这些;这是一个独立的设定。

像往常一样,你可以组合开关:rm -r -i就是rm -ri,而rm -r -f就是rm -rf

还要注意,你正在学习的内容适用于每个Unix操作系统上的bash: OS X, Linux, FreeBSD等。事实上,在每个Unix操作系统上,rm的语法在每一个壳中几乎是相同的。OS X实际上是一个BSD Unix系统。

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

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

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