Inter-Data > Blog > Dateien in allen Unterverzeichnissen unter Linux/Unix finden

Dateien in allen Unterverzeichnissen unter Linux/Unix finden

Alle Dateien mit einer speziellen Dateiendung in allen Unterverzeichnissen unter Linux/Unix finden

Beispiel:

Wenn Sie alle Markdown-Dateien in Ihrem HugoCMS-Projekt finden möchten, die als Entwurf gekennzeichnet sind, könnten Sie diesen Befehl verwenden

find . -type f -name '*.md' -exec grep -l 'draft: true' {} \;

Dieser Befehl durchsucht das aktuelle Verzeichnis und alle Unterverzeichnisse nach Markdown-Dateien (*.md) und prüft jede dieser Dateien, ob sie die Zeile 'draft: true' enthält. Wenn dies der Fall ist, wird der Name der Datei ausgegeben. Dieser Befehl ist nützlich, um Dateien zu identifizieren, die als Entwurf gekennzeichnet sind, z.B. in einem Blog oder Dokumentationssystem, das Markdown-Dateien verwendet.

Detaillierte Erklärung:

  1. find . (Punkt):

    • Der Befehl find durchsucht Verzeichnisse und Dateien.
    • . (Punkt) gibt an, dass die Suche im aktuellen Verzeichnis beginnt und alle Unterverzeichnisse einbezieht.
  2. -type f:

    • Diese Option beschränkt die Suche auf reguläre Dateien (f steht für “file”).
    • Verzeichnisse, symbolische Links oder andere Dateitypen werden ignoriert.
  3. -name '*.md':

    • Diese Option filtert die Suche nach Dateien, deren Namen mit der Endung .md (Markdown-Dateien) übereinstimmen.
    • Der Name wird mit einem Muster verglichen, wobei * als Platzhalter für beliebige Zeichenfolgen dient.
  4. -exec:

    • Diese Option ermöglicht das Ausführen eines Befehls für jede Datei, die von find gefunden wird.
    • In diesem Fall wird der grep-Befehl für jede Markdown-Datei ausgeführt.
  5. grep -l 'draft: true' {}:

    • grep ist ein Befehl zum Durchsuchen von Textdateien nach einem bestimmten Muster.
    • -l ist eine Option, die bewirkt, dass grep nur die Namen der Dateien ausgibt, in denen das Muster 'draft: true' gefunden wird.
    • 'draft: true' ist der Suchbegriff, nach dem in den Dateien gesucht wird. Dies könnte z.B. in Markdown-Dateien verwendet werden, um Beiträge als Entwurf zu kennzeichnen.
    • {} ist ein Platzhalter, der durch den Namen der aktuellen Datei ersetzt wird, die find gefunden hat.
  6. \;:

    • Dies beendet die -exec Anweisung.
    • Der \; signalisiert, dass der exec-Block abgeschlossen ist und der Befehl für jede einzelne gefundene Datei separat ausgeführt werden soll.