在终端窗口中:
当我使用rm
命令时,它只能删除文件。
当我使用rmdir
命令时,它只能删除空文件夹。
如果我有一个嵌套了文件和文件夹的目录,里面还有更多的文件夹和文件,那么有没有一种方法可以删除所有的文件和文件夹,而不需要输入繁琐的命令?
如果有区别的话,我是从终端使用Mac Bash shell,而不是Microsoft DOS或Linux。
在终端窗口中:
当我使用rm
命令时,它只能删除文件。
当我使用rmdir
命令时,它只能删除空文件夹。
如果我有一个嵌套了文件和文件夹的目录,里面还有更多的文件夹和文件,那么有没有一种方法可以删除所有的文件和文件夹,而不需要输入繁琐的命令?
如果有区别的话,我是从终端使用Mac Bash shell,而不是Microsoft DOS或Linux。
rm -rf some_dir
-r 表示递归操作 -f 表示强制操作(取消确认消息)
请小心使用!
brew install trash
然后 trash -rf some_dir
,这将会把不需要的文件夹移动到垃圾桶中,而不是像《致命魔术》中那样神秘地消失于虚空中。(来源) - zakdancesrm -rf *
这会删除当前目录中的所有内容(包括文件和文件夹)。
但要小心!只有在您确信处于正确目录时才执行此命令。
ls -R *
命令,查看rm -rf *
要删除哪些文件。 - TheTechGuy是的,有的。选项-r
告诉rm
进行递归处理,并删除以其参数为根的整个文件层次结构;换句话说,如果给定一个目录,则它将删除该目录下的所有内容,然后执行实际上等同于rmdir
的操作。
你应该知道的另外两个选项是-i
和-f
。-i
代表交互式,使rm
在删除每个文件之前提示您。-f
代表强制,无需询问即可删除所有内容。-i
更安全,但-f
更快;只有在您绝对确定要删除正确的文件时才使用它。您可以使用-r
指定这些选项,也可以不用;这是独立设置。
像往常一样,您可以组合开关:rm -r -i
就是rm -ri
,rm -r -f
就是rm -rf
。
还要注意的是,您学到的内容适用于每个Unix操作系统上的bash
:OS X、Linux、FreeBSD等。实际上,在每个Unix操作系统上的每个Shell中,rm
的语法都是相同的。在内部,OS X实际上是一个BSD Unix系统。
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;