Ich nehme an, Sie kennen den wc-Befehl zum Zählen der Anzahl der Zeilen. Wir können den gleichen wc-Befehl mit dem ls-Befehl verwenden, um die Anzahl der Dateien in einem Verzeichnis zu zählen.
Diese Aufgabe scheint einfach zu sein, könnte aber je nach Bedarf und Definition des Zählens von Dateien bald etwas komplex werden. Bevor ich Sie weiter verwirre, sehen wir uns verschiedene Anwendungsfälle zum Zählen der Anzahl von Dateien in Linux an.
Anzahl der Dateien im Verzeichnis unter Linux zählen
Lassen Sie mich Ihnen zuerst den Inhalt des Testverzeichnisses zeigen, das ich in diesem Tutorial verwenden werde:
[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
Sie können sehen, dass es 9 Dateien (einschließlich einer versteckten Datei) und 2 Unterverzeichnisse in diesem Verzeichnis gibt. Aber Sie müssen es nicht manuell tun. Zählen wir die Anzahl der Dateien mit Linux-Befehlen.
Zähle die Anzahl der Dateien und Verzeichnisse (ohne versteckte Dateien)
Sie können einfach die Kombination aus den Befehlen ls und wc ausführen und die Anzahl der Dateien wird angezeigt:
ls | wc -l
Dies ist die Ausgabe:
[email protected]:~/tutorials$ ls | wc -l
10
Es gibt ein Problem mit diesem Befehl. Es zählt alle Dateien und Verzeichnisse in den aktuellen Verzeichnissen. Aber es sieht nicht die versteckten Dateien (die Dateien, deren Namen mit einem Punkt beginnen).
Aus diesem Grund zeigte mir der obige Befehl eine Anzahl von 10 Dateien statt 11 (9 Dateien und 2 Verzeichnisse).
Zählen Sie die Anzahl der Dateien und Verzeichnisse einschließlich versteckter Dateien
Sie wissen wahrscheinlich bereits, dass die Option -a des Befehls ls die versteckten Dateien anzeigt. Wenn Sie jedoch den Befehl ls -a verwenden, wird auch die . (aktuelles Verzeichnis) und .. (übergeordnetes Verzeichnis). Aus diesem Grund müssen Sie die Option -A verwenden, die die versteckten Dateien außer . und .. Verzeichnisse.
ls -A | wc -l
Dadurch erhalten Sie die korrekte Anzahl von Dateien und Verzeichnissen im aktuellen Verzeichnis. Sehen Sie sich die Ausgabe an, die eine Anzahl von 11 anzeigt (9 Dateien und 2 Verzeichnisse):
[email protected]:~/tutorials$ ls -A | wc -l
11
Sie können auch diesen Befehl verwenden, um das gleiche Ergebnis zu erzielen:
ls -1A | wc -l
Beachten Sie, dass die verwendete Option 1 (eins) und nicht l (L) ist. Mit der Option l (L) wird eine zusätzliche Zeile am Anfang der Ausgabe angezeigt (siehe „total 64“ im Verzeichnis output am Anfang des Artikels). Die Verwendung von 1 (eins) listet einen Inhalt pro Zeile ohne die zusätzliche Zeile auf. Dadurch erhalten Sie ein genaueres Ergebnis.
Zählen Sie die Anzahl der Dateien und Verzeichnisse einschließlich der Unterverzeichnisse
Was Sie bisher gesehen haben, ist nur die Anzahl der Dateien und Verzeichnisse im aktuellen Verzeichnis. Die Dateien in den Unterverzeichnissen werden nicht berücksichtigt.
Wenn Sie die Anzahl der Dateien und Verzeichnisse in allen Unterverzeichnissen zählen möchten, können Sie den Befehl tree verwenden.
tree -a
Dieser Befehl zeigt die Verzeichnisstruktur und dann die Zusammenfassung am Ende der Ausgabe an.
[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
Wie Sie in der Ausgabe sehen können, gibt es insgesamt 7 Verzeichnisse und 20 Dateien. Das Gute an diesem Ergebnis ist, dass Verzeichnisse bei der Anzahl der Dateien nicht mitgezählt werden.
Zähle nur die Dateien, nicht die Verzeichnisse
Bisher haben alle Lösungen, die wir zum Zählen der Anzahl von Dateien gesehen haben, auch Verzeichnisse berücksichtigt. Verzeichnisse sind im Wesentlichen Dateien, aber was ist, wenn Sie nur die Anzahl der Dateien zählen möchten, nicht die Anzahl der Verzeichnisse? Sie können den wunderbaren Find-Befehl verwenden.
Sie können diesen Befehl ausführen:
find . -type f | wc -l
Der obige Befehl hat nach allen Dateien (Typ f) im aktuellen Verzeichnis und seinen Unterverzeichnissen gesucht.
[email protected]:~/tutorials$ find . -type f | wc -l
20
Zähle nur die Dateien, keine Verzeichnisse und nur im aktuellen Verzeichnis, nicht Unterverzeichnisse
Das ist cool! Was aber, wenn Sie nur die Anzahl der Dateien im aktuellen Verzeichnis zählen möchten, ohne die Dateien in den Unterverzeichnissen? Sie können denselben Befehl wie oben verwenden, jedoch mit einem kleinen Unterschied.
Alles, was Sie tun müssen, ist, die „Tiefe“ Ihres Fundes hinzuzufügen. Wenn Sie es auf 1 setzen, werden die Unterverzeichnisse nicht betreten.
find . -maxdepth 1 -type f | wc -l
Hier ist jetzt die Ausgabe:
[email protected]:~/tutorials$ find . -maxdepth 1 -type f | wc -l
9
Am Ende…
Unter Linux haben Sie mehrere Möglichkeiten, dasselbe Ziel zu erreichen. Ich bin mir ziemlich sicher, dass es mehrere andere Methoden geben kann, um die Anzahl der Dateien in Linux zu zählen. Wenn Sie einen anderen Befehl verwenden, warum teilen Sie ihn uns nicht mit?
Ich hoffe, dieses Linux-Tutorial hat Ihnen geholfen, ein paar Dinge zu lernen. Bleiben Sie in Kontakt, um weitere Linux-Tipps zu erhalten.