GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Posix Find auf bestimmte Tiefe beschränken?

Mir ist kürzlich aufgefallen, dass POSIX-Spezifikationen für find schließen Sie nicht -maxdepth ein primär.

Für diejenigen, die damit nicht vertraut sind, der Zweck von -maxdepth Primär ist es, einzuschränken, wie viele Ebenen tief find wird absteigen. -maxdepth 0 ergibt nur Befehlszeilenargumente werden verarbeitet; -maxdepth 1 würde Ergebnisse nur direkt innerhalb der Befehlszeilenargumente verarbeiten usw.

Wie kann ich das äquivalente Verhalten zum Nicht-POSIX -maxdepth erhalten primär nur POSIX-spezifizierte Optionen und Tools verwenden?

(Hinweis:Natürlich kann ich das Äquivalent von -maxdepth 0 erhalten indem Sie einfach -prune verwenden als erster Operand, aber das erstreckt sich nicht auf andere Tiefen.)

Akzeptierte Antwort:

Sie können -path verwenden um eine bestimmte Tiefe zu erreichen und dort zu beschneiden. ZB

find . -path '*/*/*' -prune -o -type d -print

wäre maxdepth 1, als * entspricht dem . , */* stimmt mit ./dir1 überein , und */*/* stimmt mit ./dir1/dir2 überein der beschnitten ist. Wenn Sie ein absolutes Startverzeichnis verwenden, müssen Sie ein führendes / hinzufügen zum -path auch.


Linux
  1. Ausgang begrenzen und Signal 13 vermeiden?

  2. Suche nach Dateien, die NICHT einem bestimmten Benutzer gehören

  3. Wie finde ich unter Linux alle Dateien, die bestimmten Text enthalten?

  4. Suchen Sie rekursiv nach Dateien mit einer bestimmten Erweiterung

  5. Suchen und Löschen von Dateien mit einem bestimmten Datum

So finden Sie eine bestimmte Zeichenfolge oder ein bestimmtes Wort in Dateien und Verzeichnissen

Finden Sie heraus, wann eine bestimmte Linux-Kernel-Version zuletzt gebootet wurde

So begrenzen Sie die Tiefe des „Baums“ für die rekursive Dateiauflistung

rekursives grep:Bestimmte Verzeichnisse ausschließen

Wie listet man Ordner mit Bash-Befehlen auf?

So finden Sie die Quelle eines POSIX-Signals heraus