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

FREDD77000 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Arm.7.ageddon Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   5
 
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