
Ésta debería ser una pregunta relativamente sencilla. Estoy intentando pasar varios archivos a través de un programa ejecutable en un bucle. Probé varias estrategias (almacenar en una matriz, etc.) pero el nombre del archivo no parece reconocerse como una variable. El error que recibo es: No existe tal archivo o directorio.
El esquema de mi último intento:
FILES=path/*/*
for f in $FILES
do
./function -input $f
done
Estoy trabajando en un shell bash.
Respuesta1
En lugar de usar una variable simple para almacenar una secuencia de expansión global, se recomienda usar una matriz adecuada y habilitar la opción global de shell globstar
para completar archivos en todos los subdirectorios.
shopt -s globstar nullglob
file_list=(path/**/*)
y use un bucle sobre la matriz para procesar en cada archivo
for file in "${file_list[@]}"; do
printf '%s\n' "$file"
# Your other actions on file goes here
done