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 find
comando se ejecuta myscript
para 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 myscript
debe incluir esto en su código:
. ./"$1"
Notas:
- Supongo
myscript
que es interpretado por un shell. - Mencionaste
source
pero.
es más portátil. - Yo usé
./"$1"
porque tú usaste-execdir
.Parecealgunas implementaciones defind
no incluyen./
en la cadena sustituida por{}
after-execdir
. Si este fuera el caso, entonceseste percancepodría pasar. Agregar un explícito./
evita esto.