Answers:
练习安全的计算。只需在层次结构中上一层,而不使用通配符表达式:
cd ..; rm -rf -- <dir-to-remove>
两个破折号--
告诉rm
这<dir-to-remove>
不是一个命令行选项,即使它与破折号开始。
rm ./
它,可能会意外输入rm . /
,可能会造成灾难。
将删除当前文件/目录下的所有文件/目录。
find -mindepth 1 -delete
如果要对名称相同的另一个目录执行相同的操作,则只需命名为
find <name-of-directory> -mindepth 1 -delete
如果不仅要删除其子目录和文件,还希望删除目录本身,请省略-mindepth 1
。不做此操作即可-delete
获取将要删除的内容的列表。
-mindepth 1
,如果你指定一个目录(find <name-of-directory> -mindepth 1 -delete
)。否则Johannes是正确的,它将不会删除当前的工作目录(使用时find -delete
)。
find -mindepth 1 -delete
但我得到 illegal option -- m
,但它的工作伟大的,当我删除了mindepth选项 find . -delete
我一直做的就是打字
rm -rf *
和然后打ESC- *,和bash将扩大*在当前工作目录中的文件和目录的显式列表。
好处是:
实际上,我非常喜欢这一点,因此在.bashrc中使用以下行将其设置为TAB的默认行为:
bind TAB:insert-completions
--
此答案中缺少?总的来说,我必须说这种方法很棒。
用
rm -rf *
更新:.
当前目录的代表,但是我们不能使用它。该命令似乎已经明确检查了.
和..
。请改用通配符。但这可能有风险。
IMO使用的是更安全的版本:
rm -ri *
(这会提示您进行确认,然后再删除每个文件/目录。)
正确的做法是rm –rf .
直接删除当前的所有内容,包括任何子目录及其内容。的单点(.
)指当前目录。注意不要做,rm -rf ..
因为双点(..
)表示上一个目录。
话虽如此,如果您像我一样并同时打开多个终端窗口,则最好保持安全,并使用“ rm -ir .
让我们看看命令参数”来了解原因。
首先,如果查看rm
命令手册页(man rm
在大多数Unix下),您会注意到它的–r
意思是“以递归方式删除目录的内容”。因此,rm -r .
单独执行操作会删除当前目录中的所有内容及其下面的所有内容。
在rm –rf .
添加的-f中表示“忽略不存在的文件,从不提示”。该命令将删除当前目录中的所有文件和目录,并且从不提示您确认确实要这样做。-f
如果在特权用户下运行该命令特别危险,因为您可以删除任何目录的内容而没有机会确保它确实是您想要的。
在otherhand,在rm -ri .
该-i
替换的-f
意思是“任何拆除前提示”。这意味着您将有机会在rm高兴地删除所有文件之前说“糟糕!这不是我想要的”。
在我早期的sysadmin时代,我rm -rf /
以完全特权(root)登录时在系统上进行了操作。结果是两天过去了从备份还原系统。这就是我现在雇用的原因rm -ri
。
使确定你是在正确的目录
rm -rf *
我相信这个答案更好:
/unix/12593/how-to-remove-all-the-files-in-a-directory
如果您的顶级目录被调用
images
,请运行rm -r images/*
。这使用shell glob运算符在图像中的每个文件或目录上*
运行rm -r
。
基本上,您会上一层,然后说删除X目录中的所有内容。这样,您仍然可以指定删除哪个文件夹的内容,这比只说“在此处删除所有内容”更安全,同时保留原始文件夹,(有时您会想要这样做是因为不允许或不希望这样做)修改文件夹的现有权限)