(8 réponses)
Fermé il y a 5 ans.
Je souhaite supprimer tous les fichiers de différents répertoires et ne conserver que les 20 derniers fichiers.
est-ce la bonne commande ?
ls -t1 /mnt/dwh/ftp/dwh_ftp_cbs/ARLOGS/ | tail -n +22 | xargs rm -f
Réponse acceptée :
Avec zsh
et glob-qualificatifs :
print -rl -- *(D.Om[1,-21])
listera tous les fichiers normaux à l'exception des vingt derniers (les plus récemment modifiés).D
sélectionne les fichiers cachés, .
sélectionne uniquement les fichiers normaux, Om
signifie un tri inversé par mtime (donc le plus ancien en premier) et [1,-21]
sélectionne du premier au 21 jusqu'au dernier.
Si vous êtes satisfait du résultat, remplacez print -rl
avec rm
:
rm -- *(D.Om[1,-21])
Si vous avez un grand nombre de fichiers, vous devrez peut-être utiliser zargs
pour éviter une liste d'arguments trop longue :
autoload zargs
zargs ./*(D.Om[1,-21]) -- rm