删除目录中的所有文件(不要触摸任何文件夹或其中的任何内容)

too*_*oop 17 unix linux bash shell

我想知道是否rm可以删除目录中的所有文件(但不删除子文件夹或子文件夹中的文件)?

我知道有些人使用:

rm -f /direcname/*.*
Run Code Online (Sandbox Code Playgroud)

但是这假定文件名有一个扩展而不是全部(我希望所有文件 - 有或没有扩展名被删除).

小智 35

虽然find允许您使用-exec rm {} \;可以使用的删除文件

find /direcname -maxdepth 1 -type f -delete
Run Code Online (Sandbox Code Playgroud)

它更快.使用-delete意味着-depth选项,这意味着在目录之前处理目录内容.


huo*_*uon 7

find /direcname -maxdepth 1 -type f -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

说明:

  • find 搜索其中的文件和目录 /direcname
  • -maxdepth 限制它寻找直接子项的文件和目录 /direcname
  • -type f 将搜索限制为文件
  • -exec rm {} \;rm {}为每个文件运行命令(在替换文件的路径代替之后{}).


ton*_*nio 2

您可以使用

find /direcname -maxdepth 1 -type f -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)

  • 这是递归的,这是OP不想要的。 (2认同)