Cómo pasar archivos encontrados repetidamente para que se obtengan mediante script

Cómo pasar archivos encontrados repetidamente para que se obtengan mediante script

Estoy encontrando archivos que no terminan en .done así:

find -type f -not -name \*.done -execdir myscript {} \;

Ahora lo que quiero hacer es lo siguiente:

-pasar cada archivo encontrado a myscript

-obtenga cada archivo en myscript con el comando fuente

-ejecutar myscript para cada archivo fuente

Nota: quiero ejecutar myscript repetidamente, una vez por cada archivo que se encuentre. No quiero ejecutar myscript para varios archivos simultáneamente. Básicamente, estoy buscando recorrer los archivos encontrados y obtenerlos en myscript. ¿Cómo puedo lograr esto?

Respuesta1

Su findcomando se ejecuta myscriptpara cada archivo encontrado, pasando el nombre del archivo como primer argumento de la línea de comando a myscript.

Desea obtener el archivo en myscript, por lo que myscriptdebe incluir esto en su código:

. ./"$1"

Notas:

  • Supongo myscriptque es interpretado por un shell.
  • Mencionaste sourcepero .es más portátil.
  • Yo usé ./"$1"porque tú usaste -execdir.Parecealgunas implementaciones de findno incluyen ./en la cadena sustituida por {}after -execdir. Si este fuera el caso, entonceseste percancepodría pasar. Agregar un explícito ./evita esto.

información relacionada