(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