如何从目录中删除所有文件?

我得到的最接近的是

# rm /path/to/directory/*.* 

但这对没有扩展名的文件不起作用……

Linux不使用扩展。 由文件的创建者决定他是否希望该名称具有扩展名。 Linux查看第一个字节以确定它正在处理哪种文件。

要删除目录中的所有内容,请使用:

 rm /path/to/directory/* 

您可以使用-r选项,例如:

rm -r /path/to/directory/*

还删除要删除内容的目录中的任何子目录(及其所有内容)。 否则它将显示错误,通知您它没有删除目录。

  • 要删除包含其所有内容( 包括所有内部文件夹 )的文件夹

     rm -rf /path/to/directory 
  • 要删除文件夹的所有内容包括所有内部文件夹 ),但不删除文件夹本身:

     rm -rf /path/to/directory/* 

    要么

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

    如果你想确保隐藏的文件/目录也被删除。

  • 要从文件夹中删除所有“文件”( 删除内部文件夹 ):

     rm -f /path/to/directory/{*,.*} 

哪里:

  • rm – 代表“ 删除
  • -f – 表示“ 强制 ”,例如,如果您不想被要求/提示是否要删除存档,这将非常有用。
  • -r – 表示“ 递归 ”,这意味着您希望以递归方式向下移动每个文件夹并删除所有内容。

要删除目录中的所有文件(包括隐藏文件和子目录),请运行:

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

如果您只想删除/ path / to /目录中的文件,您可以这样做

 find /path/to/directory -type f -print0| xargs -0 rm 

要么

 find /path/to/directory -type f -exec rm '{}' \; 

您可以使用find执行加载,优点是您可以列出找到的内容而无需将其rmrm以便您可以在开始之前查看将删除的内容。

如果您还想删除所有子目录和目录本身,可以使用rm -rf /path/to/directory 。 但是在按下返回之前总是仔细检查你的行, rm -rf也可能导致大量的havock,例如,如果你在拥有超级用户权限的情况下意外地在第一个斜杠之后插入一个空格……

要删除目录中的所有文件和目录(包括隐藏的文件和目录),可以尝试以下操作:

  • 删除该文件夹,然后重新创建它

     rm -rf dir_name && mkdir dir_name 
  • find

     find dir_name -mindepth 1 -delete 

这里我们指定-mindepth 1来排除目录dir_name本身。
看看以下链接:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory

您可以进入该目录,然后运行命令rm *.*就像在DOS中一样,如果你还记得的话。

要删除当前目录,您可以使用例如rm -d ./*

-d告诉删除目录。

因为当我自己搜索这个问题时,这个问题一直在谷歌的顶端:

其他答案有不同的问题:

  1. 其中一些包括...这是嘈杂,混乱和烦人的。

  2. 其中一些忘记了隐藏文件(以点开头的文件)。

  3. 它们不会以正确的(最深的)顺序删除以允许删除目录。

  4. 它们会下降到其他(已安装的)文件系统中,这通常是不受欢迎的。

  5. 它们很难通过额外的参数正确扩展(更多内容见下文)。

因此,要RECURSIVELY删除目录中的所有文件和文件夹,请执行以下操作:

 find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d -- 

请注意,我添加了一个-xdev参数以防止降级到挂载(如/proc等)。

为什么不-depth-delete

尽管人们不断为此贬低我,但这些方法有一个缺点:看起来它们的可扩展性不足以允许-prune一个子目录(不会引入更多问题)。 与此方法相比,您可以插入

 -not \( -path "${DIR}/subdir" -prune \) 

-mindepth参数之前,以排除subdir的内容被删除。