web-dev-qa-db-fra.com

Comment trouver de petits dossiers non vides?

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?

2
Paradiesstaub

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.

3
ekthomson

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écuter

Vous pouvez également le faire en utilisant xargs au lieu de le canaliser dans sh, mais j'ai l'habitude de cette façon.

1
Llamageddon