
Esta deve ser uma pergunta relativamente simples. Estou tentando passar vários arquivos por meio de um programa executável em loop. Tentei várias estratégias (armazenamento em um array, etc.), mas o nome do arquivo não parece ser reconhecido como uma variável. O erro que estou recebendo é: Esse arquivo ou diretório não existe.
O esboço da minha última tentativa:
FILES=path/*/*
for f in $FILES
do
./function -input $f
done
Estou trabalhando em um shell bash.
Responder1
Em vez de usar uma variável simples para armazenar uma sequência de expansão glob, recomendo usar uma matriz adequada e ativar a opção de globbing do shell globstar
para preencher arquivos em todos os subdiretórios
shopt -s globstar nullglob
file_list=(path/**/*)
e use um loop sobre a matriz para processar cada arquivo
for file in "${file_list[@]}"; do
printf '%s\n' "$file"
# Your other actions on file goes here
done