bash 中的无限循环

bash 中的无限循环

我在本地目录中有 672 个文件,文件名类似于:boutique-*_20160116hh0000.csvgeneral-tgbt_1_20160116hh0000.csv、 其中 hh - 小时数和(例如 、boutique-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`

但这种行为正确吗?

收到第一条评论后,我尝试另一个测试 - 仅保留 4 个文件而不是 672 个文件(boutique-a05_7_20160116220000.csv、boutique-a16_18_20160116020000.csv、general-tgbt_1_20160116170000.csv、wago-pfc-750-815_99_2016 0116020000.csv)并且我的命令有效美好的。

谢谢

答案1

最好将结果放在其他地方。输出ls已经排序,但您仍然不需要它。将脚本缩短为:

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

相关内容