GNU/Linux >> Tutoriales Linux >  >> Linux

Eliminar todos los archivos de una carpeta excepto el último (más reciente) 20?

Esta pregunta ya tiene respuestas aquí :eliminar los archivos más antiguos

(8 respuestas)
Cerrado hace 5 años.

Quiero eliminar todos los archivos de diferentes directorios y quiero mantener solo los últimos 20 archivos.
¿Es este el comando correcto para hacer esto?

ls -t1 /mnt/dwh/ftp/dwh_ftp_cbs/ARLOGS/ | tail -n +22 | xargs rm -f

Respuesta aceptada:

Con zsh y calificadores globales:

print -rl -- *(D.Om[1,-21])

listará todos los archivos regulares excepto los últimos veinte (modificados más recientemente).
D selecciona archivos ocultos, . selecciona solo archivos normales, Om significa orden inverso por mtime (los más antiguos primero) y [1,-21] selecciona desde el primero hasta el 21 hasta el último.
Si está satisfecho con el resultado, reemplace print -rl con rm :

rm -- *(D.Om[1,-21])

Si tiene una gran cantidad de archivos, es posible que deba usar zargs para evitar lista de argumentos demasiado larga :

autoload zargs
zargs ./*(D.Om[1,-21]) -- rm

Linux
  1. 3 formas de eliminar todos los archivos de un directorio excepto uno o algunos archivos con extensiones

  2. Sed:¿Eliminar todas las apariciones de una cadena excepto la primera?

  3. ¿Eliminar todos los archivos excepto en un determinado subdirectorio con Buscar?

  4. ¿Cómo copiar los 10 archivos más recientes de un directorio a otro?

  5. Elimine todos los archivos excepto los 3 más nuevos en bash script

Cómo encontrar todos los archivos dispersos en Linux

Mover todos los archivos excepto uno

¿Cómo eliminar todos los archivos en una carpeta, pero no eliminar la carpeta usando las bibliotecas estándar de NIX?

¿Qué tiene de malo mi secuencia de comandos bash para mantener los últimos archivos x y eliminar el resto?

¿Cómo eliminar todos los archivos en un directorio excepto algunos?

¿Eliminar todo /var/log?