queremos eliminar todos los archivos que terminen con un número con dígito o más como 2 dígitos o tres dígitos y así sucesivamente
nota: cuando los archivos terminan con un número, nos indica que este archivo se rotó y en realidad se realizó una copia de seguridad con un número único
ejemplo
-rw-r--r-- 1 kafka hadoop 73668 Aug 5 07:56 controller.log.2018-08-05-07
-rw-r--r-- 1 kafka hadoop 73668 Aug 5 08:56 controller.log.2018-08-05-08
-rw-r--r-- 1 kafka hadoop 658893 Aug 7 11:53 controller.log.3
-rw-r--r-- 1 kafka hadoop 1092 Aug 7 14:35 controller.log.2
-rw-r--r-- 1 kafka hadoop 2750003 Aug 7 14:52 state-change.log.2018-08-07-14
-rw-r--r-- 1 kafka hadoop 3678 Aug 7 14:52 log-cleaner.log.2018-08-07-14
-rw-r--r-- 1 kafka hadoop 199094 Aug 7 14:52 controller.log.2018-08-07-14
-rw-r--r--. 1 kafka hadoop 24431 Aug 7 15:07 kafka.err
-rw-r--r-- 1 kafka hadoop 1147 Aug 7 16:02 server.log.10
-rw-r--r-- 1 kafka hadoop 1061 Aug 7 16:02 server.log.9
-rw-r--r-- 1 kafka hadoop 135465 Aug 7 16:07 server.log.8
-rw-r--r-- 1 kafka hadoop 10278 Aug 7 16:07 server.log.7
-rw-r--r-- 1 kafka hadoop 10350 Aug 7 16:07 server.log.6
-rw-r--r-- 1 kafka hadoop 10353 Aug 7 16:07 server.log.5
-rw-r--r-- 1 kafka hadoop 10322 Aug 7 16:07 server.log.4
-rw-r--r-- 1 kafka hadoop 1272 Aug 7 16:07 log-cleaner.log
-rw-r--r-- 1 kafka hadoop 473322 Aug 7 16:07 controller.log.1
-rw-r--r-- 1 kafka hadoop 170 Aug 7 16:07 controller.log
Resultados previstos:
-rw-r--r--. 1 kafka hadoop 24431 Aug 7 15:07 kafka.err
-rw-r--r-- 1 kafka hadoop 1272 Aug 7 16:07 log-cleaner.log
-rw-r--r-- 1 kafka hadoop 170 Aug 7 16:07 controller.log
Intenté esta opción pero esta opción no funciona.
find . -type f -mtime +6 -name '*[0-9]' -print -delete
por favor ayúdame a construir la sintaxis correcta,
Respuesta1
Necesitas usar el -regex
parámetro para find
.
find . -type f -mtime +6 -regex '^.*[0-9]$' -print -delete
Esto hará coincidir y eliminará todos los archivos que terminen en números (tenga en cuenta que algunas extensiones también pueden terminar en números, por ejemplo .mp4
).
También tenga en cuenta que -mtime
no admite números de coma flotante y siempre redondea al día siguiente. Entonces, si desea eliminar archivos que se modificaron hace al menos seis días, proporcione -mtime +5
.
Respuesta2
Ayúdenme a crear la sintaxis correcta.
Lo que usaste:
find . -type f -mtime +6 -name '*[0-9]' -print -delete
esla sintaxis correcta, con algunas advertencias:
-delete
no es portátil. En general, las implementaciones defind
pueden admitirlo o no. El equivalente portátil es-exec rm {} \;
.-name
utiliza patrones tipo globo. Dependiendo de su localidad,[0-9]
puedeo no puedesignifica exactamente lo que desea: puede coincidir con un carácter de un conjunto diferente a solo dígitos decimales ASCII (por ejemplo, puede coincidir