Isolieren Sie Dateien und führen Sie wc auf ihnen aus
Was wc -l /etc/*
tut , ist , dass *
für alle Elemente innerhalb erweitern /etc/
Verzeichnis. Ziel ist es also, Dateien zu isolieren und zu bearbeiten wc
. Es gibt verschiedene Möglichkeiten, dies zu tun.
for Schleife mit Test
Der test
Befehl, oder häufiger abgekürzt als, [
kann verwendet werden, um festzustellen, ob ein Element eine reguläre Datei ist:
[ -f "$FILE" ]
Wir können also alle Elemente in iterieren und nur /etc/
ausführen, wc
wenn der obige Befehl true zurückgibt. Wie so:
for i in /etc/*; do [ -f "$i" ] && wc -l "$i" ; done
finden
Wir können auch verwenden , find
mit -maxdepth
, -type
und -exec
Fahnen
find /etc/ -maxdepth 1 \( -type f -o -type l \) -exec wc -l {} +
-maxdepth
Informiert Sie darüber, wie tief die Verzeichnisstruktur noch reicht. Der Wert 1 bedeutet nur die Dateien im gewünschten Verzeichnis.
-type f
-o
Weist es an, nach regulären Dateien zu suchen, ODER (dargestellt durch Flag) nach sybolischen Links (dargestellt durch type l
). All diese Güte ist in Klammern eingeschlossen, ()
die mit einem \
Escapezeichen versehen sind, damit die Shell sie als Teil von to interpretiertfind
Befehls , und nicht als etwas anderes.
-exec COMMAND {} +
Die Struktur hier führt den Befehl aus, den wir ihm geben, +
und gibt an, dass alle gefundenen Dateien als Befehlszeilenargumente für den Befehl gespeichert werden sollen.
Um insgesamt zu produzieren, konnten wir die Ausgabe nach tail
Belieben leiten
$ find /etc/ -maxdepth 1 \( -type f -o -type l \) -exec wc -l {} + | tail -n 1
[sudo] password for xieerqi:
11196 total
Randnotiz
Es ist einfacher, es einfach zu verwenden wc -l /etc/* 2>/dev/null | tail -1
, wie in der Antwort von LD James, find
sollte jedoch Teil der Gewohnheit sein, mit Dateien umzugehen, um die Verarbeitung schwieriger Dateinamen zu vermeiden. Für weitere Informationen lesen Sie den Aufsatz Wie man richtig mit Dateinamen umgeht