Antworten:
Versuchen Sie einen Fund in einem Fund:
finden . -type d -name "a *" -exec find {} -name "b" \;
Ab dem aktuellen Verzeichnis ( .
) sucht find nach allen Verzeichnissen, die rekursiv mit dem Buchstaben a beginnen. Für jedes gefundene Verzeichnis wird nach einer Datei mit dem Namen b gesucht.
Wenn Sie nur möchten, dass es in den Ordnern angezeigt wird, die mit a beginnen , und keine Verzeichnisse in diesen a * -Ordnern, verwenden Sie maxdepth:
finden . -Typ d -name "a *" -exec find {} -maxdepth 1 -name "b" \;
um Fehler loszuwerden:
finden . -typ d -name "a *" 2> / dev / null -exec find {} -maxdepth 1 -name "b" \;
Nur ein kurzes Update für Leute, die sich mit dieser Frage befassen könnten.
Zusätzlich zu der von John T bereitgestellten Lösung habe ich auch festgestellt, dass Sie Verzeichnisse mit dem Bereinigungsschalter ausschließen können (ich denke, die Manpages sollten früher gelesen werden, hehe.)
Wenn ich zum Beispiel alle Verzeichnisse nach Datei oder Verzeichnis "b" durchsuchen möchte, mit Ausnahme von Verzeichnissen, die mit einem "a" beginnen, kann ich dies tun
find . -path 'a*' -prune -o -name "b" -print
bing
-type f
on the interiorfind
- Die Frage von OP zeigt an, dass "b" eine Datei oder ein Verzeichnis sein kann.