Je voudrais trouver (supprimer plus tard) tous les dossiers de musique qui sont presque vides (Banshee supprime uniquement les fichiers musicaux mais pas les autres fichiers qui s'y trouvent).
J'ai essayé avec:
find -type d -size -500k \;
Mais il montre aussi les dossiers contenant des fichiers plus gros.
find -type d -size -500k -exec du {} \;
montre la bonne taille.
Comment modifier la cmd de recherche pour n'afficher que les dossiers plus petits que N?
Une commande que j'utilise, tant que vous n'avez pas besoin de rediriger ceci directement dans un autre script, est
du. | sort -rn
Cela placerait les plus petits dossiers au bas de la liste imprimée avec leurs tailles. Il faudrait un peu plus de travail pour filtrer ceux qui sont plus gros.
Si vous souhaitez simplement supprimer les dossiers qui contiennent moins de N octets, le liner suivant fonctionnera:
du | awk '$1 <= 500 { print "rm -rf \"" substr($0, length($1)+2) "\""}' | sh
Qu'est-ce que cela fait? Consécutivement:
du
affiche la taille des répertoires ainsi que leurs chemins$1 <= 500
est une condition qui teste si la première colonne est inférieure à 500 (si elle est inférieure à 500 octets)print
en impression awk rm -rf "/path/to/small/dir"
| sh
le redirige vers sh pour pouvoir l'exécuterVous pouvez également le faire en utilisant xargs au lieu de le canaliser dans sh, mais j'ai l'habitude de cette façon.