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.