Algo como lo siguiente es lo que busco, pero mi código no funciona, no importa cómo escapo {}
y+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Después de ver esta pregunta de Unix - y - Linux , descubrí que el siguiente código funciona, pero no anida encontrar como tal, y sospecho que hay una mejor manera de hacer este trabajo en particular.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
¿Hay alguna forma de anidar find -exec
sin la necesidad de invocar un caparazón (como se indicó anteriormente), con todas sus extrañas citas y restricciones de escape?
¿O puede hacerse esto directamente en un solo comando de búsqueda, usando una combinación de sus muchos parámetros?
find
, pero si find
no puede hacerlo, ¿ find
por qué es tan venerado (?) Como la herramienta? para usar para encontrar archivos? ... He descubierto que find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
funciona bien en mi situación (la referencia de jw013 -prune
me llevó a esto en la página del manual), pero me pregunto si es un método robusto (en géneros). Realmente nunca he usado find
(en menos de un año de Linux), ya que locate
he hecho casi todo lo que necesito, por lo que es un territorio desconocido.
-path
prueba es exactamente lo que iba a sugerir. Con esto, deberías poder hacer todo lo que quieras (perdón por la asociación Ace Of Base;))