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 -exec
sans 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 find
vous ne pouvez pas le faire, alors pourquoi est-il find
si 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 -prune
m'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 locate
j'ai fait presque tout ce dont j'ai besoin, donc c'est un territoire inconnu.
-path
test 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;))