Trova il numero di file nella cartella e nelle sottocartelle?

111

Voglio trovare il conteggio totale del numero di file in una cartella e in tutte le sue sottocartelle.

    
posta topless 08.04.2011 - 13:55

9 risposte

176

Potrebbe essere qualcosa di simile

find . -type f | wc -l

farebbe il trucco Prova il comando dalla cartella padre.

    
risposta data sagarchalise 08.04.2011 - 14:06
21

Utilizza il comando tree . Potrebbe essere necessario installare il pacchetto tree .

Elencherà tutti i file e le cartelle nella cartella specificata ed elencherà un riepilogo alla fine.

    
risposta data Egil 08.04.2011 - 14:09
9

Per contare i file (anche i file senza un'estensione) nella directory principale della directory corrente, utilizzare:

ls -l | grep ^- | wc -l

Per contare i file (anche i file senza un'estensione) ricorsivamente dalla radice della directory corrente, usa:

ls -lR | grep ^- | wc -l
    
risposta data user38537 12.11.2013 - 21:39
9

Il modo più semplice e veloce è utilizzare tree . La sua velocità è limitata dal tuo terminale di output, quindi se conduci il risultato su tail -1 , otterrai risultati immediati. Puoi anche controllare a quale livello di directory ti piacciono i risultati, usando l'opzione -L . Per l'output colorato, utilizzare -C . Ad esempio:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Se non è già lì, puoi ottenerlo qui .

    
risposta data not2qubit 15.01.2014 - 14:20
4
find -type f -printf . | wc -c

Non contare le righe di output di find, poiché i nomi di file, contenenti 99 newline, contano come 100 file.

    
risposta data user unknown 08.04.2011 - 16:21
2

Utilizza questo comando per ogni cartella nel percorso

for D in *; do echo $D; find $D -type f| wc -l; done
    
risposta data Sriram Murali 20.03.2014 - 19:02
1

find sembra essere più veloce di tree quindi ho usato di seguito per contare i file in ogni directory della directory di lavoro corrente (ignorando i file in CWD) permettendo alle directory di avere spazi:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

    
risposta data Mike Bounds 21.07.2016 - 11:47
0

Puoi utilizzare find . | wc -l

find . elencherà tutti i file e le cartelle e il loro contenuto che inizia nella cartella corrente.
wc -l conteggia i risultati di find

    
risposta data david 08.04.2011 - 14:06
0

Vado anch'io con questa opzione:

  

ls -alR | grep -c ^ -

    
risposta data Charles 29.05.2016 - 08:55

Leggi altre domande sui tag