如何删除目录中的所有文件和子目录而不删除bash中的目录?

是否有命令删除目录中的所有文件和子目录而不删除目录?

例如,如果我的目录“dontDeleteMe”具有子目录“1”,“2”,“3”并且每个子目录中都有几张图片,我该如何删除子目录“1”,“2”和“3”和删除父目录“dontDeleteMe”的所有文件?

要删除目录中的所有内容而不删除目录,请键入:

rm -rfv dontDeleteMe/*

请注意, /*部分非常重要。 如果在*之前放置一个空格,它将删除当前目录中的所有文件。

另外,在同一个命令中使用rm-r* all时要非常小心。 它们可能是一个灾难性的组合。

更新:好的,我意识到你是否有隐藏/点文件[开头有点的文件名,例如.hidden ]然后这将使这些文件完好无损。

所以,对原始问题最简单的解决方案是: rm -rfv dontDeleteMe && mkdir dontDeleteMe

另一个是使用find-exec选项或管道到xargs (下面):

find dontDeleteMe/* -print0 | xargs -0 rm -rv

rm -r ./*并不总是有效的唯一原因是因为你可以拥有与*不匹配的隐藏文件和/或文件夹。

为此, bash提供了一个选项,使*匹配所有内容,甚至是隐藏的对象:

 cd dont-delete-me shopt -s dotglob rm -r ./* 

如果继续使用执行上述命令的shell,将dotglob重置为默认(未设置)状态会很有用:

 shopt -u dotglob 

打开终端( Ctrl + Alt + T )ant类型:

 find somedir -mindepth 1 -delete 

这将匹配somedir及其(大)子项中的所有文件和目录,包括“隐藏”点文件,但由于-mindepth 1而排除somedir本身,然后 – -delete它们。

 find /dontDeleteMe/ -xdev -depth -mindepth 1 -exec rm -Rf {} \; 

使用xdev选项仅在设备边界内删除文件。

要删除(在终端中)除名为“dontdelete”的基目录之外的所有文件和子目录:

 rm -rf dontdelete/* 

您可以将find-delete标志一起使用:

find dontDeleteMe/* -delete

/*很重要,因为它告诉find只搜索INSIDE名为“dontDeleteMe”的文件夹。

还要确保-delete标志位于find命令的末尾。

 rm -rf directory/{.*,/*} 

说什么:

删除所有以。开头的文件。 在“目录”和所有其他文件中。

虽然Neftas友好地注意到这个解决方案并不安全!

更安全的解决方案是:

  rm -rf directory/!(.|..) 

我不确定为什么这么复杂,如果我错了,请帮助我

 cd DoNotDeleteDir #<- this is just to make sure we are inside find . | xargs rm -rf 

而已

有一个更简单的答案:

  1. cd dontDeleteMe

  2. rm -rf *

基本系统管理讲座时间: 当您使用这样的扫描命令时,请务必注意您的位置。

我不能说够了。 我不得不恢复一个盒子,因为有人没有注意并在/中键入rm -rf *

* nix假设如果你是root用户,或者如果你是root用户,那么你就知道自己在做什么。 所以在你做之前一定要确定你知道自己在做什么。

在您发出’rm’之前确保’cd’命令有效的替代方法是使用

 cd dontDeleteMe && rm -rf * 
  1. 对我来说最简单的事 – 一个Windows专家,但是一个ubuntu新手
  2. 单击启动器上的“文件”图标
  3. 导航到要删除的文件和文件夹所在的目录
  4. 右键单击文件旁边窗口的空白区域,然后单击“在终端中打开” – 保持文件窗口打开
  5. 终端窗口将打开,并将“设置”到您找到的文件夹
  6. 您可以输入“dir”(当我说类型时忽略引号)并按下回车键以显示文件和文件夹列表 – 只是为了certificate您“在”正确的文件夹中
  7. 输入“rm -rf *”并按Enter键
  8. 根据要删除的文件夹/文件的大小,系统会暂停
  9. 当终端提示返回时,您打开的文件窗口现在将显示“文件夹为空”
  10. 我使用这种方法取得了成功,我很高兴看到文件窗口中的文件/文件夹以及终端窗口中的Dir命令
  11. 我还感到欣慰的是,“文件”窗口显示文件夹现在为空 – 特别是因为我一直在追查这些文件,寻找他们所在的垃圾文件夹
  12. 感谢所有提交答案的人 – 这是非常有益的