Loop infinito no bash

1

Eu tenho 672 arquivos no diretório local, nomes de arquivos são como: boutique-*_20160116hh0000.csv , general-tgbt_1_20160116hh0000.csv , onde hh - horas 'number e (por exemplo, boutique-a13_15_20160116060000.csv , boutique-a16_18_20160116070000.csv , boutique-a05_7_20160116190000.csv e assim por diante) .

Eu corro o seguinte comando no bash:

(for i in 'ls -1 | sort'; do cat $i | while read line; do echo "${i%%_2016*}," $line; done ; done;) > c.csv

E isso leva a um loop infinito, o arquivo c.csv aumenta de tamanho.

Qual é o motivo?

Acredito que meu arquivo c.csv também está caindo no resultado de

'ls -1 | sort'

Mas este comportamento está correto?

Depois de receber o primeiro comentário, tento outro teste - mantenha apenas 4 arquivos em vez de 672 (boutique-a05_7_20160116220000.csv, boutique-a16_18_20160116020000.csv, general-tgbt_1_20160116170000.csv, wago-pfc-750-815_99_20160116020000.csv) e meu comando funciona bem.

Obrigado

    
por Yabel 20.01.2016 / 13:54

1 resposta

0

É melhor colocar o resultado em outro lugar. A saída ls já está classificada, mas você não precisa disso de qualquer maneira. Encurte seu roteiro para:

for i in *.csv ; do
    while read line ; do
        echo "${i%%_2016*}," $line
    done <$i
done >/tmp/c.csv
    
por 20.01.2016 / 15:18

Tags