Etwas wie das Folgende ist das, wonach ich suche, aber mein Code funktioniert nicht, egal wie ich flüchte {}
und+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Nach diesen sehen Unix - & - Linux Frage fand ich , dass der folgende Code funktioniert, aber es ist nicht Verschachtelung Fund als solche, und ich vermute , dass es einen besseren Weg, diese besondere Arbeit zu tun.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Gibt es eine Möglichkeit zum Verschachteln, find -exec
ohne dass eine Shell (wie oben) mit all ihren verrückten Zitier- und Fluchtbeschränkungen aufgerufen werden muss?
Oder kann dies direkt in einem einzelnen Suchbefehl unter Verwendung einer Mischung seiner vielen Parameter erfolgen?
find
Wenn find
dies nicht möglich ist, warum wird find
es dann als Werkzeug so verehrt (?)? zum Finden von Dateien zu verwenden? ... Ich habe später festgestellt, dass dies find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
in meiner Situation gut funktioniert (der Verweis auf jw013 hat -prune
mich auf der Manpage dazu geführt), aber ich frage mich, ob es eine robuste Methode ist (in Gattungen). Ich habe find
(in weniger als einem Jahr Linux) noch nie so locate
viel benutzt, wie ich brauchte, also ist es Neuland.
-path
Test ist genau das, was ich vorschlagen wollte. Damit solltest du in der Lage sein, alles zu tun , was du willst (Entschuldigung für den Verein Ace Of Base;))