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.