从终端窗口:
当我使用rm
命令时,它只能删除文件
当我使用rmdir
命令时,它只删除空文件夹。
如果我有一个目录与文件夹中的文件和文件夹嵌套,等等,有没有办法删除所有文件和文件夹而没有输入所有的剧烈命令?
如果它有所不同,我使用终端的mac bash shell,而不是Microsoft DOS或linux。
答案 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 -ri
,rm -r -f
是rm -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 {} \;
基本上它使用正则表达式来选择要从结果中排除的目录,然后删除剩余的文件。只是想把它放在这里以防其他人需要它。