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


331

从终端窗口:

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

如果我的目录中嵌套了文件和文件夹,那么在没有文件的文件夹中,是否有删除所有文件和文件夹的方法,而无需键入所有繁琐的命令?

如果有什么不同,我从终端而不是Microsoft DOS或linux使用mac bash shell。


万一您将来希望恢复文件,在这种情况下请不要使用“ rm”。使用“ rm-trash”:github.com/nateshmbhat/rm-trash
Natesh bhat

Answers:


759
rm -rf some_dir

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

小心!


26
+1并很高兴您添加了“小心!” 部分...绝对是“ Sawzall”命令,如果不小心使用,它很快就会把好日子变成坏日子。
itsmatt 2010年

5
像不做“
#rm

1
@itsmatt:您知道他们在说什么……给某人一个索佐尔,突然每个问题看起来像是数小时的乐趣!
Jim Lewis,2010年

164
在Mac上?改为执行此操作:brew install trash然后,trash -rf some_dir这会将不需要的目录移动到您的垃圾箱中,而不仅仅是将Prestige风格消失在以太中。(来源
zakdances

4
“垃圾”方法很棒!
Anopres 2014年

59
rm -rf *

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

但小心点!仅在绝对确定您位于正确的目录中时,才执行此命令。


17
rm -rf是非常危险的命令,您应始终小心并指定要删除的文件夹。
eomeroff

8
如何运行ls -R *先来看看什么会被删除rm -rf *
哈马德·汗

这对我来说很好,谢谢。
MonicaHübner2015年

14

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

您应该知道的其他两个选项是-i-f-i代表 nteractive; 它会rm在删除每个文件之前提示您。 -f代表˚F奥尔塞; 它会继续进行,并删除所有内容而无需询问。 -i更安全,但-f速度更快;仅在绝对确定要删除正确的内容时使用它。您可以选择是否指定-r;这是一个独立的设置。

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

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


1
尽管上面提到的所有选项在列出的所有Unix版本中都是标准的,但也存在一些差异。例如,OS X(而不是Linux)具有"rm -d",它可以删除文件或空目录。不过,对于OS X在内部是BSD而言,+ 1。
David Gelhar'4

没错---保证POSIX子集在Unixen上可以一致地工作,但是任何可能或可能不会的工作。
Antal Spector-Zabusky 2010年

2

因此,我一直在寻找一种删除目录中所有文件的方法,除了某些目录和文件,我想保留它们。经过大量搜索后,我设计了一种使用find进行搜索的方法。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.