Befehl zum Drucken der Anzahl der *.pdf-Dateien in einem ausgewählten Verzeichnis

Befehl zum Drucken der Anzahl der *.pdf-Dateien in einem ausgewählten Verzeichnis

Ich verwende derzeit keinen Linux-Rechner. Würde der folgende Befehl das gewünschte Ergebnis erzielen?

ls | grep ".pdf" | wc

Antwort1

Nein, „.pdf“ entspricht viel zu vielen Ausdrücken, z. B. foo.pdfaund bpdf.

wcAußerdem gibt „ohne Optionen“ auch dann die Anzahl der Zeilen, Wörter und Bytes in der Eingabe aus, wenn Sie keine falsch übereinstimmenden Dateien haben , sodass Sie zwei Zahlen mehr erhalten würden, als Sie interessieren. Wenn Sie grepmitmischen möchten, können Sie dies tun ls | grep -E "\.pdf$" | wc -l, aber solange Sie in diesem Verzeichnis nicht viele PDF-Dateien haben, wird grep nicht benötigt. In diesem Fall können Sie mit auskommen ls *.pdf | wc -l.

Später hinzugefügt, als ich darüber nachdenken konnte:

Sie können auch grepdas Zählen durchführen, sodass, wenn grepmit von der Partie ist, einfach die -cOption zum Grep-Vorgang hinzugefügt wird, anstatt die Ausgabe an weiterzuleiten wc -l. ls | grep -cE "\.pdf$"Wenn Sie also das Zählen von Verzeichnissen mit dem Namen vermeiden möchten <something.pdf>: ls -l | grep -cE "^-.*\.pdf$".

Antwort2

Du solltest benutzen

ls | grep ".pdf" | wc -l

Der -lParameter zählt nur die Anzahl der resultierenden Zeilen, während -lSie ohne ihn auch andere Werte erhalten würden, wie Zeilenumbruch, Wort- und Byteanzahl. Beachten Sie, dass hiermit Dateinamen (und auch Ordner) gezählt werden, die die Zeichenfolge „.pdf“ enthalten.

Um nur Dateien zu zählen, die mit enden .pdf, verwenden Sie besser find:

find . -type f -name "*.pdf" | wc -l

Antwort3

Ihre Shell sollte die Filterung durchführen können:

ls *.pdf | wc -l

oder Sie müssen sicherstellen, dass das Ende der Dateinamen übereinstimmt:

ls | grep "*\.pdf$" | wc -l

(Beachten Sie das Dollarzeichen).

Hinweis: Beides passt auchVerzeichnissedie Endung „.pdf“, falls vorhanden.

Hinweis 2: lssollte sich so verhalten, als ob Sie ihm eine Option gegeben hätten, -1sobald Sie seine Ausgabe weiterleiten. Andernfalls fügen Sie diesen Schalter hinzu.

verwandte Informationen