Effacer les répertoires dont la taille dépasse 20M

Fermé
FREDD77000 Messages postés 2 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 12 février 2016 - 10 févr. 2016 à 12:35
Arm.7.ageddon Messages postés 42 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 26 février 2016 - 12 févr. 2016 à 17:50
Bonjour
Dans mon répertoire profiles, j'ai plusieurs répertoires (qui contiennent eux mêmes des répertoires et des fichiers) dont la taille dépasse 20Mo

Je voudrais pouvoir effacer tous les répertoires de premier niveau (avec leur contenu) dont la taille dépasse 20Mo.

J'ai essayé avec la commande find mais je bloque.

Cordialement

Frédéric

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 févr. 2016 à 17:25
Salut,

Certes la commande
find
via l'option
-size +n
peut faire une recherche basée sur la taille, mais cela ne concerne que sur les fichiers mais pas sur les répertoires ;-\

Par contre la commande
du -s
fait ça très bien. Couplée à
awk
par exemple, elle peut t'afficher les dossiers du répertoire courant supérieur à 20 Mo :

du -s * | awk '$1 > 20000 { print $2 }'  


Il ne reste plus qu'à passer ça à
xargs
pour les supprimer via
rm
;-)
0
Arm.7.ageddon Messages postés 42 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 26 février 2016 4
10 févr. 2016 à 18:18
Attention du -s * liste aussi les fichiers, et le séparateur entre la taille et le nom est une tabulation, pas un espace.
En plus il peut arriver qu'il y ait un alias sur du (du -h), qui fera que ça ne fonctionnera pas du tout, ou pire, aléatoirement !

Du coup :
find ~ -maxdepth 1 -type d -exec du -b -s {} \; | awk 'BEGIN {FS="\t"} { if ($1 > 20000000) {print $2}}' | xargs  -0 -I {} echo suppression de {}

affichera la liste des répertoires de premier niveau dont la taille du contenu (y compris les rép. et s/s rép.) dépasse les 20.000.000 d'octets.

Pour la suppression proprement dites, il faudra remplacer "echo suppression de" par "rm -rf", mais attention au grand ménage automatique, parfois, c'est (trop) violent ! :)
0
FREDD77000 Messages postés 2 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 12 février 2016
12 févr. 2016 à 08:59
Bonjour

Je vous remercie pour vos réponses.
J 'ai essayé hier la solution de zipe31. Cela fonctionne impeccable.

Je vais aussi étudier la seconde solution fournie.
Merci encore pour votre aide

Frédéric
0
Arm.7.ageddon Messages postés 42 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 26 février 2016 4
12 févr. 2016 à 17:50
Le plus important dans ma réponse c'est ça : "Attention /du -s */ liste aussi les fichiers".
Donc, tant que tu fais le ménage "à la main", pas de soucis, la commande de zip31 est clairement plus simple.
Par contre, si tu automatises, ça prendra aussi les fichiers > 20Mo .. faut le savoir :)
0