GNU/Linux >> Tutoriels Linux >  >> Linux

Obtenir toutes les extensions et leur nombre de fichiers respectifs dans un répertoire

Solution 1 :

/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
      1 .6
      1 .cache
      1 .noconf
      1 .php
      1 .sl
      2 .bin
      2 .el
      2 .tdb
      4 .baseA
      4 .baseB
      4 .dat
      4 .DB
     27 .db
    221 .deb

Voici l'explication :

find ./ -type f

rechercher uniquement le fichier, pas le répertoire

grep -E ".*\.[a-zA-Z0-9]*$"

fichier de filtre avec extension

sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'

supprimer le chemin et le nom du fichier, enregistrer uniquement l'extension

sort | uniq -c | sort -n

trier, uniq et trier

Solution 2 :

Puisque vous utilisez Linux (gnu grep), c'est le bon moment pour utiliser Perl REs (PCRE) -P et le -o de grep option. Prendre la réponse de @bindbn comme un excellent candidat :

find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n

Linux
  1. Comment déplacer tous les fichiers source Java vers leur répertoire de packages respectif ?

  2. Obtenir le fichier le plus récent dans un répertoire sous Linux

  3. Comment puis-je trouver toutes les extensions de fichiers distinctes dans une hiérarchie de dossiers ?

  4. Comment lister la taille de chaque fichier et répertoire et trier par taille décroissante dans Bash ?

  5. Convertir toutes les extensions de fichiers en minuscules

Comment copier des fichiers et des répertoires sous Linux

Comment tarer des types de fichiers spécifiques (extensions) dans un répertoire

Bonne combinaison de ligne de commande et de navigateur de fichiers graphique ?

Gérer les autorisations de répertoire et de fichier avec chmod Recursive

Créer un fichier zip et ignorer la structure du répertoire

commande linux pour vider tous les fichiers d'un répertoire