GNU/Linux >> Tutoriels Linux >  >> Linux

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

Essayez ceci (je ne sais pas si c'est le meilleur moyen, mais ça marche) :

find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u

Cela fonctionne comme suit :

  • Rechercher tous les fichiers du dossier actuel
  • Imprime l'extension des fichiers, le cas échéant
  • Créer une liste triée unique

Pas besoin du tuyau vers sort , awk peut tout faire :

find . -type f | awk -F. '!a[$NF]++{print $NF}'

Version récursive :

find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort -u

Si vous voulez des totaux (combien de fois l'extension a été vue) :

find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort | uniq -c | sort -rn

Non récursif (dossier unique) :

for f in *.*; do printf "%s\n" "${f##*.}"; done | sort -u

J'ai basé cela sur ce post du forum, le crédit devrait y aller.


Linux
  1. Comment puis-je créer un fichier dans chaque dossier ?

  2. Comment puis-je éditer tous les fichiers renvoyés par find in vi sous Linux ?

  3. Comment trouver le gestionnaire de fichiers par défaut ?

  4. Comment combiner la commande 'tar' avec 'find'

  5. Comment puis-je trouver le fichier le plus ancien dans une arborescence de répertoires

Comment puis-je changer le nom de plusieurs fichiers dans un dossier ?

comment trouver le propriétaire d'un fichier ou d'un répertoire en python

Comment puis-je trouver l'emplacement MySQL my.cnf

Comment trouver les répertoires les plus volumineux ou les fichiers les plus volumineux ?

Comment puis-je trouver tous les fichiers liés en dur sur un système de fichiers ?

Comment dissocier tous les liens symboliques sous le répertoire ?