Je veux compter le nombre de fichiers pour chaque extension dans un répertoire ainsi que les fichiers sans extension.
J'ai essayé quelques options, mais je n'ai pas encore trouvé de solution de travail:
find "$folder" -type f | sed 's/.*\.//' | sort | uniq -c
est une option mais ne fonctionne pas s'il n'y a pas d'extension de fichier. J'ai besoin de savoir combien de fichiers n'ont pas d'extension.J'ai également essayé une boucle de recherche dans un tableau, puis additionner les résultats, mais à ce moment, ce code génère une erreur de variable non déclarée, mais uniquement en dehors de la boucle:
declare -a arr arr=() echo ${arr[@]}
Cela lève une variable non déclarée, ainsi qu'une fois la boucle de recherche terminée.
command-line
find
extension
garçon de tracteur
la source
la source
ext = [ f.split('.')[-1] for f in os.listdir('./') ]
Thatll, ce qui rendra les lignes plus courtes et peut-être plus PythonicSi vous avez GNU awk, vous pouvez faire quelque chose comme
c'est-à-dire construire / incrémenter un tableau associatif sur le dernier
.
champ séparé, ou une chaîne fixe arbitraire comme(none)
s'il n'y a pas d'extension.mawk
ne semble pas autoriser un séparateur d'enregistrements null-byte - vous pouvez utilisermawk
avec le séparateur de saut de ligne par défaut si vous êtes sûr de ne pas avoir à traiter les sauts de ligne dans les noms de vos fichiers:la source
Avec la base
/bin/sh
ou mêmebash
la tâche peut être un peu difficile, mais comme vous pouvez le voir dans d'autres réponses, les outils qui peuvent travailler sur des données agrégées peuvent traiter une telle tâche particulièrement facile. Un tel outil serait lasqlite
base de données.Le processus très simple pour utiliser la
sqlite
base de données serait de créer un.csv
fichier avec deux champs: nom de fichier et extension. Plus tard, voussqlite
pouvez utiliser une instruction d'agrégation simpleCOUNT()
avecGROUP BY ext
pour effectuer le comptage des fichiers en fonction du champ d'extensionla source
files_tb
Je pense que la table est référencée mais les colonnes de la table ne sont définies nulle part où je peux voir?printf
. Et SQLite par défaut traitera la première ligne du fichier csv comme des noms de colonne.Utilisation de PowerShell si c'est une option:
ou plus court, en utilisant des alias:
la source