TLC :: Rechercher des fichiers d'une certaine taille
La ligne de commande nous offre différents outils pour afficher la taille de vos fichiers. Nous avons par exemple la commande du (disk usage) qui dispose de différentes options pour afficher la taille des fichiers :
$ du -shc * 16M Desktop 248K documents 40G media 8.0K nohup.out 560M projects 94M security.docs
Maintenant, si vous voulez rechercher les fichiers d'une taille supérieure à 4000Ko ou 4Mo, nous pouvons utiliser la commade find qui a l'avantage de faire une recherche récursive dans tous les sous répertoires :
$ find ~/ -type f -size +4000k -exec ls -lh {} \;
De la même facon, pour trouver des fichiers de moins de 4000Ko :
$ find ~/ -type f -size -4000k -exec ls -lh {} \;
L'option -type f indique que nous recherchons des fichiers de type régulier et ~/ indique que c'est notre répertoire personnel. La commande find dispose de nombreuses options que vous trouverez dans le man.
Pour trouver la taille des répertoires, nous devons utiliser :
$ find ~/ -type d -exec du -sh {} \;
Nous aurions pu utiliser aussi xargs :
$ find ~/ -type d | xargs du -sm | sort -g
Ces deux facons de faire vous donneront exactement le même résultat sauf que l'utilisation des "pipes" ("|") ralenti l'exécution de la commande.


Commentaires
#1 option -type f
man find ???
C'est interessant comme lecture.
#2 Attention aux caractères spéciaux!
Attention, la commande "du" telle qu'elle est écrite (
du -shc *) peut avoir un comportement erratique s'il y a un fichier dont le nom commence par "-". Autant ne pas prendre de mauvaises habitudes (cela peut donner des trous de sécurité) et écrire:du -shc -- *De manière similaire, au cas où un nom de fichier contiendrait un caractère espace (c'est de plus en plus courant) ou un \n, il vaut mieux utiliser les options -print0 de find et -0 de xargs. Mais bon, si c'est un \n, le sort va foirer.
Pour que ce soit plus court à taper:
f0() { find "$@" -print0 }alias x0="xargs -0"f0 ~/ -type d | x0 du -sm | sort -g