(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