Encuentra archivos que terminen con número

Encuentra archivos que terminen con número

Estoy intentando crear un script de copia de seguridad a medida que los archivos de registro crecen cada vez más. Lo que tengo es copiar el archivo actual (por ejemplo, secureel archivo en /var/log/) y eliminar el contenido de ese archivo. Pero hay algunos archivos con nombres como: secure.1, secure.2y todo esto me gusta contarlos, y si el número es mayor, 2archivarlos todos. 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 en un bucle for donde puedo especificar un rango de números similares {1..5}o similares? ¿Hay alguna manera de separar estos archivos y convertirlos en uno solo 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 un número?

Respuesta1

Con sencillo -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]*'

Respuesta2

Para encontrar los nombres de archivos que terminan con un número oscila entre .[1 y 5].

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

Respuesta3

¿Por qué no simplemente...?

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

findPor lo que yo sé, no es necesario : el shell utiliza los mismos globos que en -name. Y si todos los archivos están en un solo directorio... Por supuesto, si hay subdirectorios que también le interesan, entonces findpodría ser beneficioso: caminar árboles en el shell puede ser un dolor de cabeza.

información relacionada