Rekursives ls mit Bedingungen


16

Warum kann ich mit einem solchen Befehl nicht alle PDF-Dateien in einem Verzeichnis und in Unterverzeichnissen finden? Wie mache ich es? (Ich benutze Bash in Ubuntu)

ls -R *.pdf

BEARBEITEN

Wie würde ich dann vorgehen, um alle diese Dateien zu löschen?

Antworten:


22

Warum kann ich mit einem solchen Befehl nicht alle PDF-Dateien in einem Verzeichnis und in Unterverzeichnissen finden?

Der Platzhalter *.pdfin Ihrem Befehl wird vor der Ausführung bashum alle übereinstimmenden Dateien im aktuellen Verzeichnis erweitert .ls


Wie mache ich es? (Ich benutze Bash in Ubuntu)

find ist deine antwort.

find . -name \*.pdf

ist eine rekursive Auflistung von PDF-Dateien. -inameIst die Groß- / Kleinschreibung nicht relevant?

find . -iname \*.pdf

listet alle .pdf-Dateien auf, einschließlich zum Beispiel foo.PDF

Sie können ls beispielsweise auch für eine begrenzte Anzahl von Unterordnern verwenden

ls *.pdf */*.pdf

Alle PDF-Dateien in Unterordnern finden (entspricht bar / foo.pdf, nicht bar / foo / asdf.pdf und nicht foo.PDF).

Wenn Sie mit find gefundene Dateien entfernen möchten, können Sie verwenden

find . -iname \*.pdf -delete

1
Gerade falls Sie eine Ausgabe ähnlich den wollen ls -lBefehl, Dateigröße zeigen, Eigentum, Datum, etc., können Sie findmit der -lsOption, zBfind . -name \*.pdf -ls
RFVoltolini

2

Wie andere gesagt haben, ist finden die Antwort.

Nun zum anderen Teil.

  • Wie würde ich dann vorgehen, um alle diese Dateien zu löschen?

    finden . -iname * .pdf -exec rm {} \;

Sollte es tun.


2
Sie müssen Ihren Glob angeben, um zu verhindern, dass er vorzeitig erweitert wird.
Bis auf weiteres angehalten.

1

Verwenden Sie find anstelle von ls

find . -name '*.pdf'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.