Tips & tricks
Par flo|va-nu-pied le mardi, 21 octobre 2008, 16:39 - bash - Lien permanent
Tips & tricks
supprimer les fichiers les plus gros d'un répertoire
///
for i in `du -a /media/data | sort -n -r | head -n 20 | cut -d'/' -f2-`;
do
if [ ! -d /$i ];
then
ls -l /$i;rm -i /$i;
fi;
done
///
Suite au commentaire de lone wolf voici une commande beaucoup plus élégante
///
find ./ -maxdepth 1 -type f -printf "%b\t%p\n" \ | sort -n -r | head -n 20 | cut -f 2 | xargs rm -v
///
Commentaires
Salut,
juste pour mettre mon grain de sel et pour dire que TIMTOWTDI, voici une solution un peu plus courte à base de find:
find ./ -maxdepth 1 -type f -printf "%b\t%p\n" \ | sort -n -r | head -n 20 | cut -f 2 | xargs rm -vJ'utilise find pour trouver tous les fichiers du dossier, et en afficher le nom et la tail, puis ensuite,comme toi, j'utilise sort, head, et cut pour récupérer les 20 plus gros fichiers, et enfin, plutôt qu'une boucle for, j'utilise xargs pour passer les fichiers à rm.
voila
comme quoi, il n'y avait pas besoin de sortir les boucles et les if pour faire cette petite chose.
Vraiment sympa cette commande... Beaucoup plus propre que lamienne, merci pour l'info. Bon je dois avouer que ça me viens beaucoup moins naturellement pour le moment. J'utilise encore ocasionnelement xargs et pour ainsi dire jamais les options print, mais il faut vraiment que je les intègre.
Bah tiens je vais editer mon billet pour la peine.