GNU/Linux >> Linux Esercitazione >  >> Linux

Ottieni tutte le estensioni e il rispettivo numero di file in una directory

Soluzione 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

Ecco la spiegazione:

find ./ -type f

trova solo file, non directory

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

file di filtro con estensione

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

elimina il percorso e il nome del file, salva solo l'estensione

sort | uniq -c | sort -n

sort, uniq e sort

Soluzione 2:

Dato che stai usando Linux (gnu grep), questo è un buon momento per usare Perl REs (PCRE) -P e -o di grep opzione. Prendendo la risposta di @bindbn come un ottimo candidato:

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

Linux
  1. Visualizzazione dell'elenco di tutti i lavori "at" e dei rispettivi comandi

  2. `^m` E come sbarazzartene?

  3. Ordinare e contare il numero di occorrenza di righe?

  4. Elimina file e directory in base ai loro nomi. Nessun file o directory con questo nome?

  5. Ottenere il conteggio delle occorrenze delle parole nel file di testo di tutte le parole e l'output di stampa ordinato?

Come copiare file e directory in Linux

Come eseguire il tar di tipi di file specifici (estensioni) in una directory

Buona combinazione di riga di comando e browser di file grafico?

Gestisci le autorizzazioni di directory e file con chmod Recursive

Decomprimi tutti i file nella directory senza chiedere conferma

Ottieni la dimensione di tutte le cartelle nella directory