Algo parecido com o seguinte é o que eu estou procurando, mas meu código não funciona, não importa como eu escape {}
e+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Depois de ver essa pergunta sobre o Unix - e - Linux , descobri que o código a seguir funciona, mas não está aninhando o achado como tal, e suspeito que haja uma maneira melhor de realizar esse trabalho específico.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Existe alguma maneira de aninhar find -exec
sem a necessidade de chamar uma concha (como acima), com todas as suas citações esquisitas e restrições de escape?
Ou isso pode ser feito diretamente em um único comando find, usando uma mistura de seus muitos parâmetros?
find
, mas se find
não pode fazer isso, por que é find
tão reverenciado (?) Como a ferramenta? usar para encontrar arquivos? ... Eu descobri subseqüentemente que find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
funciona bem na minha situação (a referência de jw013 -prune
me levou a isso na página de manual), mas me pergunto se é um método robusto (em gêneros). Eu realmente nunca usei find
(em menos de um ano de Linux) como locate
fiz quase tudo o que preciso, por isso é um território desconhecido.
-path
teste é exatamente o que eu ia sugerir. Com isso, você deve ser capaz de fazer tudo o que você quer (não para o Ace Of Base de associação;))