J'ai besoin de trouver les fichiers de moins de 5 Mo dans/var/log/et la sortie devrait afficher la taille de chaque fichier. quelle commande dois-je utiliser?
Cette commande trouvera les fichiers dans /var/log
dont la taille est inférieure à 5 Mo et affiche la taille (en kilo-octets) avec le nom du fichier:
find /var/log -maxdepth 1 -size -5M -type f -printf '%5k %f\n'
Un exemple de sortie pourrait ressembler à ceci:
112 syslog.6.gz
1048 messages.1
112 syslog.5.gz
120 syslog.7.gz
1216 syslog.1
-maxdepth 1
indique à find de ne pas descendre dans les sous-répertoires. (Si vous souhaitez inclure des sous-répertoires, omettez-le)
-size -5M
indique à find de limiter les résultats aux fichiers dont la taille est inférieure à 5 Mo.
-type f
indique à find de ne rechercher que les fichiers normaux.
-printf '%5k %f\n'
indique à find d'allouer 5 espaces à la taille et d'imprimer la taille en kilo-octets, suivi d'un espace, suivi du nom du fichier.
Cela fonctionne bien pour moi:
find /var/log/ -name * -size -5M -ls | awk '{ print $11 " has a size of " $7 }'
Mise à jour du 1er juin: dans une version plus récente d'Ubuntu Server, le -name *
n'est pas disponible mais vous pouvez maintenant l'utiliser:
find /var/log/ -type f -size -5M -ls | awk '{ print $11 " has a size of " $7 }'
Si vous avez besoin d'une version plus lisible par l'homme, celle-ci serait une bonne option
find /var/log/ -type f -size -5M -exec ls -lsh {} \; | awk '{ print $10 " has a size of " $1 }'