web-dev-qa-db-fra.com

Comment afficher les tailles de fichier "lisible par l'homme" dans Rechercher des résultats?

J'essaie de trouver tous les gros fichiers sur mon serveur Centos. Faire cela que j'utilise:

find / -maxdepth 10 -size +100000 -ls

J'ai essayé de changer -ls à -lsh Mais ce n'est pas permis.

Comment puis-je afficher ces résultats avec des tailles lisibles par l'homme (à l'aide de suffixes K, M, ...)?

11
blarg

find _ n'a pas d'options sophistiquées comme ls. Si tu veux ls -h, vous devez appeler ls.

find / -maxdepth 10 -size +100000 -exec ls -lh {} +

Je recommande le -xdev Option pour éviter de recouvrer dans d'autres systèmes de fichiers, ce qui serait inutile si vous êtes préoccupé par l'espace disque.

find / -xdev -maxdepth 10 -size +100000 -exec ls -lh {} +

Si vous utilisez ZSH comme coquille, alors au lieu d'utiliser find, vous pouvez utiliser Glob Qualifics. Limiter la taille du fichier est simple: L suivi d'une taille; La taille peut avoir une unité optionnelle avant le numéro. Si vous ne vous souciez pas de la profondeur maximale, vous pouvez utiliser **/ Pour recueillir dans des sous-répertoires. Si vous vous souciez de la profondeur maximale, il est plus lourd que ZSH Glob Schémas manquent d'un moyen d'exprimer "au plus -n occurrences". Pour éviter la récursion de l'appareil, utilisez le qualificatif d glob; Vous devez trouver le numéro de périphérique, que vous pouvez afficher avec la commande stat sous Linux (stat -c %d / Pour afficher uniquement le numéro) ou avec ZSH stat _ intégré (Run zmodload zsh/stat Pour le charger).

ls -lh /**/*(L+M99d$(stat -c %d /))

La commande que vous essayez est lisible pour moi. Cependant, vous pouvez utiliser l'utilitaire de fichier avec la recherche ci-dessous.

find / -maxdepth 10 -size +100000 -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print

Une autre façon de faire cela consiste à utiliser la commande ci-dessous.

du -BM / | sort -nr

La commande ci-dessus vous donnera les fichiers de la taille du fichier triée.

Si vous utilisez Coreutils> 7.5 , vous pouvez émettre la commande ci-dessous pour répertorier les fichiers par tailles.

du -ah / | grep -v "/$" | sort -h

Dans ma machine, je n'ai pas eu le sort -h Option disponible.

Comme vous l'aviez mentionné dans le commentaire, votre format lisible humain est que le fichier doit avoir la taille dans KB , MB ou GB . J'irais avec le deuxième commandement que j'avais posté comme réponse. La sortie que j'ai eu quand je l'ai utilisée dans mon système est,

du -BM /home/ramesh/chk1/ | sort -nr

50M     /home/ramesh/chk1/
21M     /home/ramesh/chk1/Hierarchical_Clustering_Working
3M      /home/ramesh/chk1/checking_files
1M      /home/ramesh/chk1/checking/checking2
1M      /home/ramesh/chk1/checking/checking1
1M      /home/ramesh/chk1/checking/asdf
1M      /home/ramesh/chk1/checking
4
Ramesh