Quelque chose comme ce qui suit est ce que je cherche, mais mon code ne fonctionne pas, peu importe comment je m'échappe {}et+ ;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Après avoir vu cette question Unix - & - Linux , j'ai trouvé que le code suivant fonctionne, mais il n'est pas imbriqué trouver en tant que tel, et je soupçonne qu'il existe une meilleure façon de faire ce travail particulier.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Existe-t-il un moyen d'imbriquer find -execsans avoir besoin d'invoquer un shell (comme ci-dessus), avec toutes ses citations délicates et ses contraintes d'échappement?
Ou cela peut-il être fait directement dans une seule commande find, en utilisant un mélange de ses nombreux paramètres?
find, mais si findvous ne pouvez pas le faire, alors pourquoi est-il findsi vénéré (?) Que l'outil- à utiliser pour trouver des fichiers? ... J'ai ensuite trouvé que cela find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+fonctionnait bien dans ma situation (la référence de jw013 -prunem'a amené à cela dans la page de manuel), mais je me demande si c'est une méthode robuste (en général). Je n'ai jamais vraiment utilisé find(en moins d'un an de Linux) comme locatej'ai fait presque tout ce dont j'ai besoin, donc c'est un territoire inconnu.
-pathtest est exactement ce que j'allais suggérer. Avec cela, vous devriez pouvoir faire tout ce que vous voulez (désolé pour l'association Ace Of Base;))