Voglio trovare il conteggio totale del numero di file in una cartella e in tutte le sue sottocartelle.
Voglio trovare il conteggio totale del numero di file in una cartella e in tutte le sue sottocartelle.
Risposte:
Potrebbe essere qualcosa di simile
find . -type f | wc -l
farebbe il trucco. Prova il comando dalla cartella principale.
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- Adotto la stampa per la mia soluzione anziché la mia eco -exec.
Per contare i file (anche i file senza estensione) nella radice della directory corrente, utilizzare:
ls -l | grep ^- | wc -l
Per contare i file (anche i file senza estensione) in modo ricorsivo dalla radice della directory corrente, utilizzare:
ls -lR | grep ^- | wc -l
Il modo più rapido e semplice è usare tree
. La sua velocità è limitata dal tuo terminale di uscita, quindi se installi il risultato a tail -1
, otterrai un risultato immediato. Puoi anche controllare a quale livello di directory ti piacciono i risultati, usando l' -L
opzione. Per output colorato, utilizzare -C
. Per 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 .
find -type f -printf . | wc -c
Non contare le righe di output di find, poiché i nomi file, contenenti 99 newline, verranno conteggiati come 100 file.
Utilizzare questo comando per ogni cartella nel percorso
for D in *; do echo $D; find $D -type f| wc -l; done
find sembra essere più veloce dell'albero, quindi ho usato di seguito per contare i file in ciascuna directory della directory di lavoro corrente (ignorando i file in CWD) consentendo alle directory di avere spazi:
ls -d */ | while read dir_line
do
echo -n "$dir_line :"
find "$dir_line" -type f | wc -l
done
ls
è una pessima idea.
Puoi usare find . | wc -l
find .
elencherà tutti i file e le cartelle e tutti i contenuti che iniziano nella cartella corrente.
wc -l
conta i risultati di find
Vorrei andare con questa opzione me stesso:
ls -alR | grep -c ^ -