Il modo più semplice sembra essere find /path/to/search -ls | wc -l
Trova è usato per camminare attraverso tutti i file e le cartelle.
-ls
per elencare (stampare) tutti i nomi. Questo è un valore predefinito e se lo lasci fuori funzionerà ancora allo stesso modo quasi tutti i sistemi. (Quasi, poiché alcuni potrebbero avere impostazioni predefinite diverse). È una buona abitudine usare esplicitamente questo però.
Se si utilizza solo la find /path/to/search -ls
parte, verranno stampati tutti i file e le directory sullo schermo.
wc
è il conteggio delle parole. l' -l
opzione dice di contare il numero di righe.
Puoi usarlo in diversi modi, ad es
- wc testfile
- file di test gatto | bagno
La prima opzione consente a wc di aprire un file e contare il numero di righe, parole e caratteri in quel file. La seconda opzione fa lo stesso ma senza nome file legge dallo stdin.
Puoi combinare i comandi con una pipe |
. L'output del primo comando verrà reindirizzato all'input del secondo comando. Quindi find /path/to/search -ls | wc -l
utilizza find per elencare tutti i file e le directory e invia l'output a wc. Wc quindi conta il numero di righe.
(Un'altra alternativa sarebbe stata "ls | wc", ma find è molto più flessibile e un buon strumento per imparare.)
[Modifica dopo commento]
Potrebbe essere utile combinare find e exec.
Ad esempio find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
, elencherò tutte le directory in /, a parte alcune che non vuoi cercare. Possiamo attivare il comando precedente su ciascuno di essi, producendo una somma di file per cartella in /.
Però:
- Questo utilizza l'estensione specifica GNU -maxdepth.
Funzionerà su Linux, ma non su qualsiasi unix-a-simili.
- Ho il sospetto che potresti davvero desiderare un numero di file per ogni sottodirectory.