Comment trouver les 10 plus gros fichiers d'un répertoire donné, avec perl ou bash? p>
EDIT: P>
4 Réponses :
$ alias ducks alias ducks='du -cs * |sort -rn |head -11'
Cette sortie ne comprend pas de sous-répertoires?
C'est un moyen de le faire à Perl. (Remarque: version non récursive, selon la version antérieure de la question) Cependant, je suis sûr qu'il y a de meilleurs outils pour le travail. P> ETA: strong> version récursive, en utilisant Fichier :: Trouver FORT> : P> perl -MFile::Find -wE '
sub wanted { -f && push @files, $File::Find::name };
find(\&wanted, "/given/dir");
@files = sort { -s $b <=> -s $a } @files;
say for @files[0..9];'
Réservoirs pour donner la solution Perl. Je me demande si cela a une empreinte mémoire de mémoire significativement différente de la solution à l'aide de trouver code>?
@ user001 je ne sais pas comment trouver code> fonctionne en interne, donc je ne peux pas dire. Il peut également varier en fonction de votre système de fichiers et de votre nombre de fichiers. Vous auriez besoin de l'essayer et de voir.
Ceci imprime les 10 fichiers les plus grands de la répertoire actuel.
find . -type f -printf "%s %p\n" | sort -nr | awk '{print $2}' | head -10
Comment imprimer également leurs tailles pour vérifier que le résultat est correct?
$ trouver. -Type f -printf "% s% p \ n" | Trier -nr | Head -10 code> fonctionne.
En réalité, cela ne fonctionne pas sur Mac OS X. Il n'a pas d'option Printf.
@ user001 sans utiliser l'option -Printf code>, vous pouvez essayer ceci:
trouver. -Type f -ls | awk '{imprimer 7 $ "" 11 $}' | Trier -nr | Head -10 code>
trouver. -Type f -ls | awk '{imprimer 7 $ "" 11 $}' | Trier -nr | Head -10 Code> Imprime rien.
Que diriez-vous -
[jaypal:~/Temp] find . -type f -exec ls -l {} + | awk '{print $5,$NF}' | sort -nr | head -n 10 8887 ./backup/GTP/GTP_Parser.sh 8879 ./backup/Backup/GTP_Parser.sh 6791 ./backup/Delete_HIST_US.sh 6785 ./backup/Delete_NORM_US.sh 6725 ./backup/Delete_HIST_NET.sh 6711 ./backup/Delete_NORM_NET.sh 5339 ./backup/GTP/gtpparser.sh 5055 ./backup/GTP/gtpparser3.sh 4830 ./backup/GTP/gtpparser2.sh 3955 ./backup/GTP/temp1.file
Ce n'est pas une solution à ce que j'ai demandé. Il génère un tas de répertoires.
@ user001 J'ai ajouté une sortie d'échantillon à partir de la doublure testée sur Mac OSX Lion
Merci, cela fonctionne correctement. Je l'ai rencontré dans un mauvais répertoire où il n'y avait pas de fichier.
@ user001 :) Pas de soucis. J'étais un peu sceptique de la réponse acceptée depuis son utilisation Printf code> Option n'est pas disponible dans
Mac code>.
Avez-vous besoin que cela soit récursif?
J'ai besoin d'autres d'écrire du code pour moi aussi!
Pas mon intention; Je n'essayais que de trouver la meilleure solution.