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 find
no puedo manejarlos. Pero incluso si pongo más de +2000
3 años, sigo recibiendo esto.
¿Qué me estoy perdiendo aquí?
Respuestas:
Te falta que
find
no necesita una lista de archivos como entrada. El problema es que el globo se/var/log/arc/*
expande a demasiados archivos. Sin embargo, sefind
repetirá en subdirectorios de forma predeterminada, por lo que no es necesario usar el glob en absoluto:-delete
es un predicado no estándar. Si sufind
implementación no lo admite, puede usar:en lugar.
fuente
find: invalid predicate
-delete ''-delete
no toma{}
. Ver actualización. Sin embargo, su mensaje de error parece sugerir que su versión defind
no 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.-exec
está definido por POSIX .