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