Ich versuche, alle Dateien per Maske in einem Verzeichnis abzurufen, ohne rekursiv in Unterverzeichnissen zu suchen. Es gibt keine Option -maxdepth 0 in AIX dafür.
Ich habe von -prune gehört , kann aber immer noch nicht verstehen, wie es funktioniert.
Ich denke, der Befehl sollte in etwa so aussehen
find dir \( ! -name dir -prune -type f \) -a -name filemask
aber es funktioniert nicht.
Könnten Sie mir bitte einen korrekten Befehl schreiben und erklären, wie er funktioniert?
UPD
Es scheint Befehl
find dir ! -path dir -prune
druckt alle Dateien und Kataloge in dir , aber keine Dateien und Kataloge in dir/* , damit ich es für meinen Fall verwenden kann.
Akzeptierte Antwort:
Sie möchten:
find dir/. ! -name . -prune -type f -name filemask
Oder:
find dir ! -path dir -prune -type f -name filemask
Um die regulären Dateien namens filemask zu finden in dir ohne in Unterverzeichnissen von dir zu suchen .
Mit find dir ! -name dir -prune , hätten Sie Probleme, wenn es ein dir/dir gäbe Verzeichnis.
Das dir/. Ansatz umgeht das, weil find findet keine andere Datei namens . als das dir/. Datei als Argument übergeben.
Der -path Der Ansatz umgeht dies, indem er sich den Dateipfad der Dateien ansieht (im Gegensatz zu nur dem Namen), -path dir stimmt mit dir überein , aber nicht auf dir/dir (also dir wird das einzige Verzeichnis sein, das nicht gelöscht wird). -path ist jedoch möglicherweise nicht in älteren Versionen von AIX verfügbar.
Allgemeiner gesagt, für das Standardäquivalent von GNUs -maxdepth n , siehe POSIX-Suche auf bestimmte Tiefe beschränken?