Yen*_*Yen 108 unix directory bash subdirectory delete-directory
我知道这会删除子目录中及其下面的所有内容:
rm -rf <subdir-name>
Run Code Online (Sandbox Code Playgroud)
但是如何删除当前目录中的所有内容以及它下面的每个子目录以及所有这些子目录的内容?
tva*_*son 166
练习安全计算.只需在层次结构中向上一级,不要使用通配符表达式:
cd ..; rm -rf -- <dir-to-remove>
Run Code Online (Sandbox Code Playgroud)
两个破折号--告诉rm这<dir-to-remove>不是一个命令行选项,甚至当它一开始就冲刺.
Joh*_*itb 43
将删除当前文件/目录下的所有文件/目录.
find -mindepth 1 -delete
Run Code Online (Sandbox Code Playgroud)
如果你想对你的名字的另一个目录做同样的事情,你可以命名
find <name-of-directory> -mindepth 1 -delete
Run Code Online (Sandbox Code Playgroud)
如果您不仅要删除它的子目录和文件,还要删除目录本身,请省略-mindepth 1.无需-delete获取将要删除的内容列表.
Vil*_*ari 40
我总是做的是打字
rm -rf *
Run Code Online (Sandbox Code Playgroud)
和然后打ESC-*,和bash将扩大*在当前工作目录中的文件和目录的显式列表.
好处是:
事实上,我非常喜欢这个,所以我把它作为TAB的默认行为,在.bashrc中使用了这一行:
bind TAB:insert-completions
Run Code Online (Sandbox Code Playgroud)
dir*_*tly 21
使用
rm -rf *
Run Code Online (Sandbox Code Playgroud)
更新:.代表当前目录,但我们不能使用它.该命令似乎有明确的检查.和...请改用通配符globbing.但这可能有风险.
一个更安全的版本IMO将使用:
rm -ri *
Run Code Online (Sandbox Code Playgroud)
(这会在删除每个文件/目录之前提示您进行确认.)
它是正确的,rm –rf .将直接删除当前的所有内容,包括任何子目录及其内容.的单点(.)指当前目录.小心不要这样做,rm -rf ..因为双点(..)表示上一个目录.
这就是说,如果你像我一样并且同时打开多个终端窗口,你最好是安全的并且使用rm -ir .让我们看一下命令参数来理解原因.
首先,如果你看一下rm命令手册页(man rm在大多数Unix下)你会注意到这–r意味着"以递归方式删除目录的内容".因此,rm -r .单独执行将删除当前目录中的所有内容以及所有内容.
在rm –rf .添加的-f中表示"忽略不存在的文件,从不提示".该命令删除当前目录中的所有文件和目录,并且从不提示您确认是否确实要这样做.-f如果您在特权用户下运行该命令,则特别危险,因为您可以删除任何目录的内容,而无法确保它真正符合您的要求.
在otherhand,在rm -ri .该-i替换的-f意思是"任何拆除前提示".这意味着在rm愉快地删除所有文件之前,你将有机会说"oups!这不是我想要的".
在我早期的系统管理员时代,我rm -rf /使用完全权限(root)登录系统.结果是两天后从备份恢复系统.这就是我现在就雇用的原因rm -ri.