在Linux中删除文件

我需要find符合特定条件的所有文件并删除它们 – 这是一个片段:

/var/www/somesite/releases/{many directories}/tmp/attachment_fu 

我想find任何tmp/attachment_fu目录中的所有文件,并删除它们 – 问题是{many directories}扔掉了我的find技能(或者find是错误的命令 – 我也尝试locate无济于事) 。

可能是我失去了something but rm /var/www/somesite/releases/*/tmp/attachment_fu/*似乎是你想要的。 ls /var/www/somesite/releases/*/tmp/attachment_fu来查看将要删除的内容

ls / var / www / somesite / releases / * / tmp / attachment_fu | xargs rm -rf

这样的事情?

是,或rm -rf / var / www / somesite / releases / * / tmp / attachment_fu

;)

我不完全清楚你想做什么 – 删除名称attachment_furecursion的文件,但离开目录单独?

如果是这样,试试这个(我已经添加了回声,所以你可以先testing它)…

 find /var/www/somesite/releases -type f -name attachment_fu -exec echo rm -f {} \; 

如果没有,请进一步解释:)

或者,您可以使用-regex标志来查找“/ tmp /”是否重要; 就像是…

 find /var/www/somesite/releases -type f -regex '.*/tmp/attachment_fu$' -exec echo rm -f {} \; 

所有这一切都假设你以后的文件在文件系统树中处于不同的深度,否则你可以使用rm(以radius为单位)。

除了其他的答案之外,如果使用*,当你要删除的文件数量巨大的时候,你可能会在“命令行太长”的错误。

最安全的方式可能是使用shell扩展来检索dirs列表,循环它们并使用find来删除文件:

 for d in $(ls /var/www/somesite/releases/*/tmp/attachment_fu) do find $d -type f -exec rm {} \; done 

这应该工作得很好,当然如果你有大量的dirs,它会失败,但是你还有其他的问题:P

rm -rf表示path,它将删除所有目录和文件