288 votes

Comment puis-je trouver toutes les différentes extensions de fichiers dans une arborescence de dossiers?

Sur une machine Linux, je voudrais parcourir une arborescence de dossiers et d'obtenir une liste de tous les différents extensions de fichier.

Quelle serait la meilleure façon de le réaliser à partir d'un shell?

407voto

Ivan Nevostruev Points 14934

Essayez ceci (pas sûr si c'est la meilleure façon, mais il fonctionne):

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

Il fonctionne comme suit:

  • Trouver tous les fichiers du dossier en cours
  • Imprime l'extension des fichiers si tout
  • Faire une liste triée

72voto

SiegeX Points 32614

Pas besoin pour le canal sort, awk peut tout faire:

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

53voto

ChristopheD Points 38217

Reursive version:

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

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

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

Je l'ai basé sur ce post sur le forum, le crédit devrait y aller.

37voto

Simon R Points 69

Powershell: dir -recurse | select-object extension -unique

grâce à http://kevin-berridge.blogspot.com/2007/11/windows-powershell.html

13voto

user224243 Points 201

Trouver everythin avec un point et ne montrer que le suffixe.

find . -type f -name "*.*" | awk -F. '{print $NF}' | sort -u

si vous savez tous suffixe ont 3 caractères, puis

find . -type f -name "*.???" | awk -F. '{print $NF}' | sort -u

ou avec sed montre tous les suffixes de une à quatre caractères. Le changement {1,4} à la gamme des personnages vous attendent dans le suffixe.

find . -type f | sed -n 's/.*\.\(.\{1,4\}\)$/\1/p'| sort -u

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X