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

Fermé
Signaler
Messages postés
2
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
12 février 2016
-
Messages postés
42
Date d'inscription
lundi 11 janvier 2016
Statut
Membre
Dernière intervention
26 février 2016
-
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

Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 489
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
;-)
Messages postés
42
Date d'inscription
lundi 11 janvier 2016
Statut
Membre
Dernière intervention
26 février 2016
4
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 ! :)
Messages postés
2
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
12 février 2016

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
Messages postés
42
Date d'inscription
lundi 11 janvier 2016
Statut
Membre
Dernière intervention
26 février 2016
4
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 :)