Bashの無限ループ

Bashの無限ループ

ローカルディレクトリには、次boutique-*_20160116hh0000.csvのようなファイル名を持つ672個のファイルがあります。general-tgbt_1_20160116hh0000.csvboutique-a13_15_20160116060000.csvboutique-a16_18_20160116070000.csvboutique-a05_7_20160116190000.csv

Bashで次のコマンドを実行します。

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

無限ループが発生し、ファイルc.csvサイズが増加します。

何らかの理由?

c.csv私のファイルも結果に停止したようです。

`ls -1 | sort`

ところで、このような行動が正しいのでしょうか?

最初のコメントを受けてから別のテストを試しました。 672 の代わりに 4 つのファイルのみを保存します116020000.csv)そして私のコマンドはうまくいきます。

ありがとう

ベストアンサー1

結果を他の場所に置くことをお勧めします。出力はlsソートされていますが、まだ必要ありません。スクリプトを次のように減らします。

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

おすすめ記事