从终端窗口:
当我使用rm命令时,它只能删除文件。 当我使用rmdir命令时,它只删除空文件夹。
如果我有一个包含文件和文件夹的目录,那么是否有一种方法可以删除所有的文件和文件夹,而不需要费力地输入命令?
如果有区别的话,我在终端上使用Mac Bash shell,而不是Microsoft DOS或Linux。
从终端窗口:
当我使用rm命令时,它只能删除文件。 当我使用rmdir命令时,它只删除空文件夹。
如果我有一个包含文件和文件夹的目录,那么是否有一种方法可以删除所有的文件和文件夹,而不需要费力地输入命令?
如果有区别的话,我在终端上使用Mac Bash shell,而不是Microsoft DOS或Linux。
当前回答
我正在寻找一种方法来删除一个目录中的所有文件,除了一些目录和文件,我想保持在周围。我设计了一种方法来使用find:
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;
本质上,它使用regex来选择要从结果中排除的目录,然后删除剩余的文件。
其他回答
是的,有。-r选项告诉rm是递归的,并删除基于其参数的整个文件层次结构;换句话说,如果给定一个目录,它将删除其中的所有内容,然后执行实际上是rmdir的操作。
您应该知道的另外两个选项是-i和-f。-i代表交互;它使rm在删除每个文件之前提示您。-f代表力;它会自动删除所有内容。-i更安全,但-f更快;只有在你绝对确定你删除的内容是正确的情况下才使用它。你可以用-r或不指定;这是一个独立的设定。
和往常一样,你可以组合开关:rm -r -i等于rm -ri, rm -r -f等于rm -rf。
还要注意,您正在学习的内容适用于所有Unix操作系统:OS X、Linux、FreeBSD等。事实上,rm的语法在每个Unix操作系统的每个shell中都是相同的。OS X实际上是一个BSD Unix系统。
rm -rf *
将删除当前目录中的所有(文件夹和文件)。
但是要小心!只有在绝对确定处于正确目录时才执行此命令。
我正在寻找一种方法来删除一个目录中的所有文件,除了一些目录和文件,我想保持在周围。我设计了一种方法来使用find:
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;
本质上,它使用regex来选择要从结果中排除的目录,然后删除剩余的文件。
rm -rf some_dir
- r“递归” -f "force"(禁止确认信息)
小心!