删除旧的caching文件 – 命令帮助

我正在尝试编写一个命令来清除旧的caching资源文件。 这些文件总是.css.javascript.css.gzip.javascript.gzip ,我想删除所有2天以前的文件。

我开始使用这个命令来testing,然后传递给exec rm

 find /home/*/tmp/cache/* -mtime +2 -type f -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css' 

这将返回所有我想删除的文件,所以我已经添加rm使命令:

 find /home/*/tmp/cache/* -mtime +2 -type f -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css' -exec rm {} \; 

没有什么实际上被删除,但我尝试了rm命令rm -i ,并没有任何提示,就好像没有实际上传递给rm一样。

有任何想法吗?

FWIW这是一个CentOS 5盒子

问题在于,在所有这些-o标志的末尾添加-exec ...将跳过AND与OR的优先级,例如,它find所有* .css.gzip或* .javascript.gzip或* .javascript或(* .css并删除它),所以它只能删除* .css,但find所有其他文件,但是什么都不做。 顺便说一句,这也意味着你的types和时间标志只适用于* .javascript.gzip。

使用

 find /home/*/tmp/cache/* -mtime +2 -type f \( -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css' \) -exec rm {} \; 

为了强制它findmtime +2的所有文件,然后inputf AND(所有不同的文件名选项)并删除它们。

为了看到这一点,在你的版本和我的版本中用()replace-exec …和-print。

尝试改变RM来回显,看看它在做什么。 如果没有返回,请删除回声,你可能会记得稍微改变命令之前添加RM :)。

把你的第一个命令,pipe道xargs rm。 我通常喜欢用空格来说明文件名,所以试试这个:

 find /home/*/tmp/cache/* -mtime +2 -type f -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css' -print0 | xargs -0 rm 

用xargs代替:

 find /home/*/tmp/cache/* -mtime +2 -type f -name '*.css.gzip' -o -name '*.javascript.gzip' -o -name '*.javascript' -o -name '*.css' -print0 | xargs -0p rm 

xargs的-p参数会提示你在每批文件被删除。 如果这个工作正常,你可以删除-p来删除整个删除。

-print0 / -0组合使用空格而不是空格分隔符来确保正确处理奇数文件名(例如带空格的文件名)。