75 votes

Comment trouver toutes les extensions de fichiers de manière récursive à partir d'un répertoire ?

Quelle commande, ou collection de commandes, puis-je utiliser pour renvoyer toutes les extensions de fichiers dans un répertoire (y compris les sous-répertoires) ?

À l'heure actuelle, j'utilise différentes combinaisons de ls et grep , mais je ne trouve aucune solution évolutive.

117voto

thkala Points 36148

Que dis-tu de ça:

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

6voto

mindon Points 21

répertorier toutes les extensions et leur nombre de répertoires actuels et de tous les sous-répertoires

 ls -1R | sed 's/[^\.]*//' | sed 's/.*\.//' | sort | uniq -c

4voto

marcosdsanchez Points 518
find . -type f | sed 's|.*\.||' | sort -u

Fonctionne aussi sur mac.

1voto

kurumi Points 10096

si vous utilisez Bash 4+

 shopt -s globstar
for file in **/*.*
do
  echo "${file##*.}
done

Rubis (1.9+)

 ruby -e 'Dir["**/*.*"].each{|x|puts x.split(".")[-1]}' | sort -u

0voto

tooly Points 1

Encore une autre solution utilisant find (qui devrait même trier correctement les extensions de fichiers avec des nouvelles lignes intégrées):

 # [^.]: exclude dotfiles
find . -type f -name "[^.]*.*" -exec bash -c '
  printf "%s\000" "${@##*.}"
' argv0 '{}' + |
sort -uz | 
tr '\0' '\n'

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