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, secure
archivo /var/log/
) y eliminar el contenido de ese archivo. Sin embargo, hay algunos archivos con el nombre como: secure.1
, secure.2
y todo esto me gusta contarlas, y si el número es más grande entonces 2
archivar 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á 1
ya 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?
find /var/log/ -name '*.1' ...
logrotate
tu propósito.Respuestas:
Con simple
-name
:o para cualquier dígito:
o si son posibles otros caracteres después del dígito:
fuente
Para encontrar los nombres de archivo que terminan con un número varía de
.
[1 a 5].fuente
¿Por qué no solo ...
Por
find
lo 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,find
podría ser beneficioso: caminar árboles en el shell puede ser un dolor de cabeza.fuente