Come contare il numero di file in una directory ma non in modo ricorsivo


30

Domanda semplice, ne sono sicuro. Ho visto una risposta che mostra come farlo includendo le sottodirectory, ma voglio sapere quanti file (non cartelle) sono solo nella directory corrente. Grazie.

Risposte:


60
ls -F |grep -v / | wc -l
  1. ls -F elenca tutti i file e accoda l'indicatore (uno di * / => @ |) alle voci
  2. grep -v /mantenere tutte le stringhe che non contengono una barra
  3. wc -l contare le righe

Elenco di tutto tranne le directory.
Thom

Apprezzo molto che tu lo abbia spiegato e spiegato le sezioni, grazie per una risposta funzionante e ben spiegata!
bcsteeve

1
Mentre tutte le risposte risolvono il mio problema, sto scegliendo questo come documentato e più facile da capire per me. Ma grazie a tutti!
bcsteeve

15

Prova questo oneliner:

find -maxdepth 1 -type f | wc -l

Questo è buono, solo i file e nient'altro :-)
Thom

Questo salta i collegamenti e i dispositivi con caratteri speciali.
ojblass

Tutte le risposte qui funzionano alla grande! Quindi, innanzitutto, GRAZIE. Secondo ... come faccio a scegliere?
bcsteeve

6

Prova questo

ls -al | grep ^[-] | wc -l
  1. ls -al - elenca tutti i file con un formato di elenco lungo
  2. grep ^[-] - cerca una stringa che inizia con "-" che è il simbolo per indicare il file normale quando elenca il file con ls -al
  3. wc -l - contare le righe

Che dire dei soft link? Che dire dei file hard link?

Bello, solo file e collegamenti, nient'altro.
Thom

Per i collegamenti soft / hard, sostituire -conl
andr3w il

Apprezzo molto che tu lo abbia spiegato e spiegato le sezioni, grazie per una risposta funzionante e ben spiegata!
bcsteeve

2

Voglio solo aggiungere la risposta di Thom perché mi piace giocare con Bash . Eccolo:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Bellow è un risultato di esempio della mia /datadirectory:

Directory /data has 580569 file(s).

E sotto sono le mie spiegazioni:

  1. echo double-quoted-message stamperà un messaggio desiderabile.
  2. $(any-desirable-valid-command)all'interno del messaggio tra virgolette doppie echoverrà stampato il risultato dell'esecuzione del comando correlato.
  3. pwd stamperà la directory corrente.
  4. ls -Fserve per elencare tutti i file e aggiungere l'indicatore (uno di * / => @ |) alle voci. L'ho copiato dalla risposta di Thom .
  5. grep -v /è un comando per la ricerca di testo semplice, il -v /parametro manterrà tutte le stringhe che non contengono barre.
  6. wc -l stamperà il conteggio delle righe.

So che questa domanda ha 3 anni, non riesco proprio a sostenere l'impulso di aggiungere un'altra risposta.


2

Se hai treeinstallato sul tuo sistema puoi usare questo comando:

tree -L 1 /path/to/your/directory | tail -n 1

Ti mostra il numero di file e directory in quella directory.

-L n mostra la profondità della ricerca.

È possibile installare treecon sudo apt-get install tree.


-3

Per contare il numero totale di file con estensione specifica è possibile digitare:

ls|grep jpg |wc -l
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.