web-dev-qa-db-fra.com

comment trouver les fichiers de moins de 5 Mo dans / var / log / et afficher avec la taille du fichier?

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?

1
Thasneem Hakkim

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

Comment ça fonctionne

  • -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.

2
John1024

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 }'
1
Marcusg562