Je veux écrire un shell script
ou alias
pour trouver le nombre de types de fichiers différents dans un répertoire. Par exemple, un exemple de sortie de script doit être:
*.h 20
*.c 40
*.cpp 10
Makefile 3
find . -type f -name '*.*' -exec sh -c 'echo ${0##*.}' {} \; | sort | uniq -c | sort -nr
le echo ${0##*.}
vous donne l'extension du fichier. Nous canalisons la sortie vers sort
puis compter les lignes uniques avec uniq
.
Quelques ajouts:
uniq
n'est pas trié en fonction du nombre d'occurrences, vous devrez rediffuser un tri numérique ( -nr
) si vous voulez le trier. -maxdepth 1
à ton find
commander. awk '{print $2, $1}'
pour montrer le compte après les extensions.
-name '*.*'
l'option restreintfind
aux fichiers avec des extensions seulement. Si vous laissez cela de côté, vous obtiendrez un nombre de 1 pour chaque fichier, ce qui risque de ne pas être idéal.sh
processus prend un peu plus de temps d'exécution, filtrant les résultats avecfind
sera un peu plus rapide, je suppose.