GNU/Linux >> Tutoriales Linux >  >> Linux

Shell script para contar archivos, luego eliminar archivos más antiguos

Asegúrese de que su pwd sea el directorio correcto para eliminar los archivos (suponiendo que solo haya caracteres regulares en el nombre del archivo):

ls -A1t | tail -n +11 | xargs rm

mantiene los 10 archivos más nuevos. Lo uso con el programa de cámara 'motion' para mantener los archivos de captura de fotogramas más recientes. Gracias a todas las respuestas anteriores porque me mostraron cómo hacerlo.


find es la herramienta común para este tipo de tarea:

find ./my_dir -mtime +10 -type f -delete

EXPLICACIONES

  • ./my_dir su directorio (reemplace con el suyo propio)
  • -mtime +10 más de 10 días
  • -type f solo archivos
  • -delete No sorpresa. Elimínelo para probar su find filtro antes de ejecutar todo el comando

Y cuida que ./my_dir existe para evitar malas sorpresas !


La forma correcta de hacer este tipo de cosas es con logrotate .


Prueba esto:

ls -t | sed -e '1,10d' | xargs -d '\n' rm

Esto debería manejar todos los caracteres (excepto las líneas nuevas) en un nombre de archivo.

¿Qué está pasando aquí?

  • ls -t enumera todos los archivos en el directorio actual en orden decreciente de tiempo de modificación. Es decir, los archivos modificados más recientemente son los primeros, un nombre de archivo por línea.
  • sed -e '1,10d' borra las primeras 10 líneas, es decir, los 10 archivos más nuevos. Yo uso esto en lugar de tail porque nunca puedo recordar si necesito tail -n +10 o tail -n +11 .
  • xargs -d '\n' rm recopila cada línea de entrada (sin la nueva línea de terminación) y pasa cada línea como argumento a rm .

Como con cualquier cosa de este tipo, experimente en un lugar seguro.


Linux
  1. ¿Determinar Shell en el script durante el tiempo de ejecución?

  2. Bash Script para eliminar el archivo más antiguo de una carpeta?

  3. ¿Procesos en una sesión en un shell interactivo versus en un script?

  4. ¿Cómo ftp y descargo archivos desde un UNIX Shell Script?

  5. Cómo buscar archivos usando expresiones regulares en el script de shell de Linux

¿Cómo contar la cantidad de archivos en un directorio y eliminar los más antiguos si el número supera los 5?

¿El significado de $? ¿En un guión de Shell?

¿Cómo ejecutar un comando en un script de Shell?

Shell Script para imprimir pirámide de Estrellas

Ejecutar script de shell en paralelo

Contar líneas en archivos grandes