如何快速通过terminal(bash shell)删除文件和目录
从terminal窗口:
当我使用rm
命令时,它只能删除文件。
当我使用rmdir
命令只删除空的文件夹。
如果我有一个文件夹和文件夹中的文件和文件夹等目录,有没有办法删除所有的文件和文件夹没有所有艰苦的命令input?
如果它有所作为,我从terminal使用mac bash shell,而不是Microsoft DOS或linux。
rm -rf some_dir
-r“recursion”-f“强制”(禁止确认消息)
小心!
rm -rf *
将删除当前目录中的所有内容(文件夹和文件)。
不过要小心! 只有在您确定的情况下才能执行此命令,以确保您位于正确的目录中。
就在这里。 -r
选项告诉rm
是recursion的,并删除以其参数为根的整个文件层次结构; 换句话说,如果给定一个目录,它将删除它的所有内容,然后执行一个有效的rmdir
。
你应该知道的另外两个选项是-i
和-f
。 -i
代表互动; 它使rm
在删除每个文件之前提示您。 -f
代表f orce; 它继续前进,删除所有内容而不问。 -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系统。
使用rsync可能会很快
所以我一直在寻找一种方法来删除目录中的所有文件,除了一些目录和文件,我想保持周围。 经过多次search,我devise了一种使用find的方法。
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;
本质上它使用正则expression式来select要从结果中排除的目录,然后删除剩余的文件。 只是想把它放在这里,以防别人需要它。