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?