删除超过500天的文件


10

我的目录包含2010年以来的文件。.我想删除所有500天以上的文件,我尝试这样做:

find /var/log/arc/* -type f -mtime +500 -delete {}\;      

但是我得到这个:

-bash: /usr/bin/find: Argument list too long

据我所知,这意味着文件太多,find无法处理它们。但是,即使我提出了+20003年以上的建议,我仍然会做到这一点。

我在这里想念的是什么?


Answers:


18

您丢失了find不需要输入文件列表的情况。问题是,全局/var/log/arc/*文件扩展到太多文件。但是,find默认情况下会递归到子目录,因此根本不需要使用glob:

find /var/log/arc/ -type f -mtime +500 -delete

-delete是非标准谓词。如果您的find实现不支持它,则可以使用:

find /var/log/arc/ -type f -mtime +500 -exec rm -f {} +

代替。


谢谢的,但现在得到了:find: invalid predicate -delete'`
Garg

1
@Garg首先,对不起,我只是复制了您的命令,却没有注意到您的语法错误。该-delete用不了{}。查看更新。但是,您的错误消息似乎表明您的版本find不支持-delete。如果您不使用GNU find(在大多数情况下,除非使用Linux,否则您不会使用),则需要使用GNU -exec -rm {} \;
terdon

谢谢。-exec rm {} \;做到这一点。
加尔

1
@hobbs我不明白为什么不能,-exec由POSIX定义
terdon

@terdon我的错。
hobbs
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.