GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso trovare tutte le estensioni di file distinte in una gerarchia di cartelle?

Prova questo (non sono sicuro che sia il modo migliore, ma funziona):

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

Funziona come segue:

  • Trova tutti i file dalla cartella corrente
  • Stampa l'estensione dei file, se presenti
  • Crea un elenco ordinato univoco

Non c'è bisogno che la pipe vada a sort , awk può fare tutto:

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

Versione ricorsiva:

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

Se vuoi i totali (quante volte è stata vista l'estensione):

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

Non ricorsivo (cartella singola):

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

Mi sono basato su questo post del forum, il merito dovrebbe andare lì.


Linux
  1. Come trovare il file più vecchio in un albero di directory in Linux

  2. Come trovare il tipo di un file Img e montarlo?

  3. Come trovare tutti i file sparsi in Linux

  4. Come posso trovare la versione di Fedora che uso?

  5. come trovare il proprietario di un file o di una directory in python

Come trovo la posizione MySQL my.cnf

Come posso creare un file in ogni cartella?

Come posso modificare tutti i file restituiti da find in vi in ​​Linux?

Come trovare il file manager predefinito?

Come combinare il comando 'tar' con 'find'

Come posso rasterizzare tutto il testo in un PDF?