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

时间:2010-04-15 01:22:42

标签: file terminal directory rm rmdir

从终端窗口:

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

如果我有一个目录与文件夹中的文件和文件夹嵌套,等等,有没有办法删除所有文件和文件夹而没有输入所有的剧烈命令?

如果它有所不同,我使用终端的mac bash shell,而不是Microsoft DOS或linux。

4 个答案:

答案 0 :(得分:683)

rm -rf some_dir

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

小心!

答案 1 :(得分:52)

rm -rf *

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

但要小心!如果您完全确定,只有在正确的目录中才能执行此命令。

答案 2 :(得分:11)

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

您应该知道的其他两个选项是-i-f-i代表 i nteractive;在删除每个文件之前,它会使rm提示您。 -f代表 f orce;它继续前进并删除所有内容而不询问。 -i更安全,但-f更快;只有在你绝对确定你正在删除正确的东西时才使用它。您可以使用-r指定这些内容;这是一个独立的环境。

和往常一样,您可以组合切换:rm -r -i只是rm -rirm -r -frm -rf

另请注意,您正在学习的内容适用于每个Unix操作系统上的bash:OS X,Linux,FreeBSD等。实际上,rm的语法几乎相同<每个Unix操作系统上的em>每个shell 。引擎盖下的OS X实际上是一个BSD Unix系统。

答案 3 :(得分:2)

所以我一直在寻找一种方法来删除目录中的所有文件,除了一些目录和文件,我想保留。经过多次搜索,我设计了一种方法,使用find。

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

基本上它使用正则表达式来选择要从结果中排除的目录,然后删除剩余的文件。只是想把它放在这里以防其他人需要它。