我需要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,它将删除所有目录和文件