¿Cómo pasar nombres de archivos como variables a un programa ejecutable?

¿Cómo pasar nombres de archivos como variables a un programa ejecutable?

É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 globstarpara 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

información relacionada