Retourner aux forums || Retourner au forum Astuces.divers
Astuces.divers : [Terminal] Compter le nombre de fichiers par extension dans un répertoire
Posté par Gentoo][Gravis (page perso, ) le 21 décembre 2005Le premier sed doit pouvoir être amélioré.
> Lire le message (2 commentaires, moyenne: 2).
Plus simple:
Le premier sed doit pouvoir être amélioré.
Moi c'est surtout les commandes qui suivent que je trouve un peu lourdes. Voila plus simple et un peu plus elegant:
find . -name "*.*"|sed 's/.*\.//g'|sort|uniq -c|sort -nr|gawk 'OFS="\t" {print $1,$2}' > result.txt
NB: l'option -i de sed t'eviterait de travailler sur 2 fichiers...
Une version avec Perl...
avec un résultat similaire à la tienne :
find . -name '*.*' | perl -nle 's/^.*\.//; ++$n{$_}; END { foreach (sort { $n{$a} <=> $n{$b} || $a cmp $b } keys(%n)) { print "$n{$_},$_" } }' > result.txt
ou à celle de Jérôme (c'est-à-dire en affichant dans l'ordre décroissant des fréquences et avec une tabulation comme séparateur), mais en gardant l'ordre alphabétique pour les extensions ayant une même fréquence :
find . -name '*.*' | perl -nle 's/^.*\.//; ++$n{$_}; END { foreach (sort { $n{$b} <=> $n{$a} || $a cmp $b } keys(%n)) { print "$n{$_}\t$_" } }' > result.txt
ou encore une variante transformant en minuscules les extensions qui n'y sont pas :
find . -name '*.*' | perl -nle 's/^.*\.//; ++$n{lc($_)}; END { foreach (sort { $n{$b} <=> $n{$a} || $a cmp $b } keys(%n)) { print "$n{$_}\t$_" } }' > result.txt
Berlin 1936, Moscou 1980, Pékin 2008.
Jeux Olympiques, sponsor officiel de la dictature.
Mexico 1968, Pékin 2008.
Jeux Olympiques, sponsor officiel de la répression.
Revenir en haut de page || Retourner aux forums || Retourner au forum Astuces.divers



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.