A volte vogliamo trovare il numero di file in una directory in Linux. Ad esempio, trovare quante immagini sono presenti nella directory dei caricamenti di WordPress di JournalDev.
Esistono vari modi per farlo, esaminiamo alcuni degli scenari comuni e il miglior comando per trovare il numero di file in una directory.
1. Trova il numero di file in una directory
Possiamo usare il comando ls insieme al comando wc per contare il numero di file in una directory. Contiamo il numero di file nella mia directory principale del tema.
# ls 404.php archive.php functions.php inc layouts phpcs.xml.dist screenshot.png single.php webpack LICENSE comments.php header.php index.php package-lock.json postcss.config.js search.php src woocommerce.css Plugins dist home.php js package.json readme.txt sidebar-left.php style.css README.md footer.php images languages page.php rtl.css sidebar.php template-parts # ls -1 | wc -l 34
Se guardi l'immagine, gli elementi colorati in blu sono directory. Sono anche inclusi come file nell'output.
E se volessimo contare solo i file e non le directory?
# ls -p | grep -v / | wc -l 24 #
- Il comando "ls -p" stampa i nomi delle directory con "/" alla fine.
- Il comando “grep -v /” filtra l'output e stampa solo il nome che non contiene “/”, escludendo quindi tutte le directory.
- Infine, “wc -l” conta le righe nell'output e lo stampa.
Allo stesso modo, se vuoi trovare il numero di directory solo all'interno di una directory, usa il comando seguente.
# ls -p | grep / | wc -l 10 #
Nota:i comandi precedenti non cercano i file nascosti, se vuoi che il conteggio includa anche i file nascosti, usa l'opzione "-a" con il comando ls.
# ls -a1 | wc -l 41 #
Questo comando conterà "." e anche "..", quindi dovrai tenerne conto nello script della shell, se necessario.
2. Trova il numero di file in una directory e sottodirectory in modo ricorsivo
Gli esempi precedenti sono utili per contare file e directory in una directory. Ma, se vuoi contare il numero di file incluse anche le sottodirectory, dovrai usare il comando trova.
# find . -type f ./.test_file ./functions.php ./logger/class-logger-writter.php ./logger/class-logger-export.php ./logger/assets/js/base.js ./logger/assets/css/base.css ./logger/assets/css/base.less ./logger/assets/css/base.css.map ./logger/class-logger-reader.php ./class-protector.php ./class-anti-spam-plugin.php # find . -type f | wc -l 11 #
- L'opzione "-type f" del comando trova viene utilizzata per cercare file normali.
- Questo comando ignorerà tutte le directory, i file "." e "..". Ma includerà i file nascosti nell'output.
- Il comando “wc -l” conteggerà il numero totale di righe e lo stamperà, fornendoci così il conteggio dei file.
Riferimenti:
- Pagina man del comando wc
- trova la pagina man dei comandi