Faz o loop através de todos os arquivos em um subdiretório dado, nomeia a saída pelo arquivo em loop

0

Eu tenho milhares de arquivos * csv em um determinado subdiretório.

Existe um simples executável em linha que uso para trabalhar com esses arquivos, que canalizo para um novo arquivo:

executable file1.csv standard.csv > output_file1.csv

Eu gostaria de criar um loop para fazer isso não apenas para file1.csv , mas para todos os arquivos nesse subdiretório.

Eu tentaria algo assim:

for file in *.csv
do
    # run executable on "$file" and output 
    executable $file standard.csv > output
done

Acho que isso funcionará, mas como nomear cada saída output_ + $file + .csv ?

    
por ShanZhengYang 07.03.2017 / 17:35

1 resposta

2

Agradecemos a Bruno9779 pelo rascunho original desta resposta. Não tenho certeza do motivo de ter sido excluído automaticamente, pois foi uma resposta muito boa:

Você praticamente fez isso sozinho:

destinationDir="/destination/path/here/"
if cd "$destinationDir"; then
    for file in *.csv;  do
        # run executable on "$file" and output 
        executable "$file" standard.csv > "${destinationDir}/output_${file}.csv"
    done
else
    echo "Unable to change to working directory."
fi

Lembre-se de citar nomes de arquivos com variáveis.

    
por 07.03.2017 / 17:54