Tengo un directorio con archivos del año 2010 .. Quiero eliminar todos los archivos anteriores a 500 días y probé esto:
find /var/log/arc/* -type f -mtime +500 -delete {}\;
Pero entiendo esto:
-bash: /usr/bin/find: Argument list too long
Como sé, esto significa que hay demasiados archivos y findno puedo manejarlos. Pero incluso si pongo más de +20003 años, sigo recibiendo esto.
¿Qué me estoy perdiendo aquí?

Respuestas:
Te falta que
findno necesita una lista de archivos como entrada. El problema es que el globo se/var/log/arc/*expande a demasiados archivos. Sin embargo, sefindrepetirá en subdirectorios de forma predeterminada, por lo que no es necesario usar el glob en absoluto:-deletees un predicado no estándar. Si sufindimplementación no lo admite, puede usar:en lugar.
fuente
find: invalid predicate-delete ''-deleteno toma{}. Ver actualización. Sin embargo, su mensaje de error parece sugerir que su versión defindno es compatible-delete. Si no está usando GNUfind(que en la mayoría de los casos no lo hará a menos que esté usando Linux), debe usarlo-exec -rm {} \;en su lugar.-exec rm {} \;Haz el truco.-execestá definido por POSIX .