GNU/Linux >> Linux Esercitazione >  >> Linux

Conta il numero di file in una directory in Linux

Presumo che tu sia a conoscenza del comando wc per il conteggio del numero di righe. Possiamo usare lo stesso comando wc con il comando ls per contare il numero di file in una directory.

Questa attività sembra semplice ma potrebbe presto diventare leggermente complessa in base alle tue esigenze e alla definizione del conteggio dei file. Prima di confonderti ulteriormente, vediamo i vari casi d'uso del conteggio del numero di file in Linux.

Conteggia il numero di file nella directory in Linux

Lascia che ti mostri prima il contenuto della directory di test che userò in questo tutorial:

[email protected]:~/tutorials$ ls -la
total 64
drwxr-xr-x 4 abhishek abhishek 4096 Apr 29 17:53 .
drwxr-xr-x 55 abhishek abhishek 4096 Apr 29 15:50 ..
-rwxr–r– 1 abhishek abhishek 456 Mar 6 16:21 agatha.txt
-rw-r–r– 1 abhishek abhishek 0 Apr 16 19:53 .a.t
-rwxr–r– 1 abhishek abhishek 140 Mar 22 16:41 bash_script.sh
-rw-rw-r– 1 abhishek abhishek 95 Feb 11 13:12 cpluplus.cpp
-rw-r–r– 1 abhishek abhishek 1778 Apr 29 16:16 my_zip_folder.zip
drwxr-xr-x 4 abhishek abhishek 4096 Apr 19 19:07 newdir
-rw-r–r– 1 abhishek abhishek 163 Apr 13 15:07 prog.py
-rw-r–r– 1 abhishek abhishek 19183 Mar 18 18:46 services
-rw-r–r– 1 abhishek abhishek 356 Dec 11 21:35 sherlock.txt
-rwxrw-r– 1 abhishek abhishek 72 Jan 21 15:44 sleep.sh
drwxr-xr-x 3 abhishek abhishek 4096 Jan 4 20:10 target

Puoi vedere che ha 9 file (incluso un file nascosto) e 2 sottodirectory in quella directory. Ma non devi farlo manualmente. Contiamo il numero di file usando i comandi Linux.

Conta il numero di file e directory (senza file nascosti)

Puoi semplicemente eseguire la combinazione dei comandi ls e wc e visualizzerà il numero di file:

ls | wc -l

Questo è l'output:

[email protected]:~/tutorials$ ls | wc -l
10

C'è un problema con questo comando. Conta tutti i file e le directory nelle directory correnti. Ma non vede i file nascosti (i file il cui nome inizia con un punto).

Questo è il motivo per cui il comando sopra mi ha mostrato un conteggio di 10 file invece di 11 (9 file e 2 directory).

Conta il numero di file e directory inclusi i file nascosti

Probabilmente sai già che -un'opzione del comando ls mostra i file nascosti. Ma se usi il comando ls -a, mostra anche l'estensione . (directory attuale) e .. (directory principale). Questo è il motivo per cui è necessario utilizzare l'opzione -A che visualizza i file nascosti esclusi . e .. directory.

ls -A | wc -l

Questo ti darà il conteggio corretto di file e directory nella directory corrente. Dai un'occhiata all'output che mostra un conteggio di 11 (9 file e 2 directory):

[email protected]:~/tutorials$ ls -A | wc -l
11

Puoi anche usare questo comando per ottenere lo stesso risultato:

ls -1A | wc -l

Si noti che l'opzione utilizzata è 1 (uno) non l (L). Utilizzando l'opzione l (L) viene visualizzata una riga aggiuntiva all'inizio dell'output (vedere "totale 64" nell'output della directory all'inizio dell'articolo). L'utilizzo di 1 (uno) elenca un contenuto per riga esclusa la riga aggiuntiva. Questo fornisce un risultato più accurato.

Conta il numero di file e directory comprese le sottodirectory

Quello che hai visto finora è il conteggio di file e directory solo nella directory corrente. Non tiene conto dei file nelle sottodirectory.

Se vuoi contare il numero di file e directory in tutte le sottodirectory, puoi usare il comando tree.

tree -a

Questo comando mostra la struttura della directory e quindi mostra il riepilogo in fondo all'output.

[email protected]:~/tutorials$ tree -a
.
├── agatha.txt
├── .a.t
├── bash_script.sh
├── cpluplus.cpp
├── my_zip_folder.zip
├── newdir
│   ├── new_dir
│   │   ├── c.xyz
│   │   ├── myzip1.zip
│   │   └── myzip2.zip
│   └── test_dir
│   ├── c.xyz
│   ├── myzip1.zip
│   └── myzip2.zip
├── prog.py
├── services
├── sherlock.txt
├── sleep.sh
└── target
├── agatha.txt
├── file1.txt
└── past
├── file1.txt
├── file2.txt
└── source1
└── source2
└── file1.txt
7 directories, 19 files

Come puoi vedere nell'output, mostra che ci sono 7 directory e 20 file in totale. La cosa buona di questo risultato è che non conta le directory nel conteggio dei file.

Conta solo i file, non le directory

Finora, tutte le soluzioni che abbiamo visto per contare il numero di file, tengono conto anche delle directory. Le directory sono essenzialmente file, ma cosa succede se si desidera contare solo il numero di file, non le directory? Puoi usare il meraviglioso comando trova.

Puoi eseguire questo comando:

find . -type f | wc -l

Il comando precedente ha cercato tutti i file (digitare f) nella directory corrente e nelle sue sottodirectory.

[email protected]:~/tutorials$ find . -type f | wc -l
20

Conta solo i file, non le directory e solo nella directory corrente, non nelle sottodirectory

Questo è figo! Ma cosa succede se si desidera contare il numero di file nella directory corrente escludendo solo i file nelle sottodirectory? Puoi usare lo stesso comando di cui sopra ma con una leggera differenza.

Tutto quello che devi fare è aggiungere la "profondità" della tua scoperta. Se lo imposti a 1, non entrerà nelle sottodirectory.

find . -maxdepth 1 -type f | wc -l

Ecco l'output ora:

[email protected]:~/tutorials$ find . -maxdepth 1 -type f | wc -l
9

Alla fine...

In Linux, puoi avere più modi per raggiungere lo stesso obiettivo. Sono abbastanza sicuro che ci possono essere molti altri metodi per contare il numero di file in Linux. Se usi qualche altro comando, perché non condividerlo con noi?

Spero che questo tutorial su Linux ti abbia aiutato a imparare alcune cose. Resta in contatto per ulteriori suggerimenti su Linux.


Linux
  1. Come aumentare il limite del numero di file aperti in Linux

  2. Come contare il numero di file e sottodirectory all'interno di una determinata directory

  3. Numero massimo di file/directory su Linux?

  4. Come contare il numero di file in ogni directory?

  5. Modo rapido per contare in modo ricorsivo i file in Linux

Come copiare un gran numero di file in Linux

Come elencare i file in modo ricorsivo in Linux

Come contare il numero di file e sottodirectory all'interno di una directory

Come contare i file nella directory su Linux

Come contare il numero di file in una directory in Linux

Linux:trova il numero di file in una directory e sottodirectory