Encuentra archivos que terminan con número

10

Estoy tratando de hacer una secuencia de comandos de respaldo a medida que los archivos de registro se hacen cada vez más grandes. Lo que tengo es hacer frente al archivo actual (por ejemplo, securearchivo /var/log/) y eliminar el contenido de ese archivo. Sin embargo, hay algunos archivos con el nombre como: secure.1, secure.2y todo esto me gusta contarlas, y si el número es más grande entonces 2archivar todos ellos. No puedo encontrar el método para encontrar estos archivos o contarlos. Lo primero que se me ocurrió fue:

find /var/log/ -name *.1 | wc -l

y esto siempre se imprimirá 1ya que hay un archivo secure.1. ¿Cómo puedo contar como en for loop donde puedo especificar un rango de números como {1..5}o similar? ¿Hay alguna manera de separar estos archivos y hacerlos como uno y hacer una copia de seguridad o eliminarlos o lo que sea ... o, en primer lugar, cómo puedo encontrar todos estos números que terminan en número?

usuario3523605
fuente
1
¿Olvidaste citar el comodín? find /var/log/ -name '*.1' ...
muru
1
Creo que deberías comprobar logrotatetu propósito.
Costas

Respuestas:

15

Con simple -name:

find /var/log -name '*.[2-9]'

o para cualquier dígito:

find /var/log -name '*.[[:digit:]]'

o si son posibles otros caracteres después del dígito:

find /var/log -name '*.[2-9]*'
jimmij
fuente
¿Cómo encontrar aquellos que SOLO contienen dígitos en su nombre?
letthefireflieslive
3

Para encontrar los nombres de archivo que terminan con un número varía de .[1 a 5].

find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"
Avinash Raj
fuente
1

¿Por qué no solo ...

for log in /var/log/*.[1-5]
do whatever to "$log"
done

Por findlo que puedo decir, no es necesario : el caparazón usa los mismos globos que usa -name. Y si todos los archivos están en un solo directorio ... Por supuesto, si hay subdirectorios en los que también esté interesado, findpodría ser beneficioso: caminar árboles en el shell puede ser un dolor de cabeza.

mikeserv
fuente