我的文件夹中有一堆 csv 。我想按顺序组合它们。
我的 csv 文件为
state_1_result_6.csv,
state_1_result_8.csv,
state_1_result_10.csv,
state_1_result_12.csv.....
每个 csv 都有一行没有标题,因此 a 的内容state_i_result.csv
如下:
1,2,3,69,19,1,2,6,10,12,30,28
我想按照第一行是 state_1_result_6.csv 和第二行是 state_1_result_8.csv 的顺序进行组合,依此类推。
我尝试过
cat state*.csv > final.csv
但它并没有按顺序合并。
答案1
既然您知道它们,只需循环索引列表即可:
for i in 6 8 10 12;
do
cat state_1_result_${i}.csv >> final.csv
done
您还可以使用 C 循环:
for ((i=6; i<=12; i+=2))
答案2
很高兴看到索引就在文件扩展名之前。
cat state*.csv > final.csv
考虑按 ascii 字符排序。也就是说,排序后的 { 6, 8, 10, 12 } 变成了 { 10, 12 , 6, 8 }。
在手册页中LS,有一个选项-v,根据版本号排序,这就是所需要的。因此,您可以使用
cat `ls -v | grep .csv` > final.csv
如果这些是目录中唯一的 csv 文件。
答案3
或者更简单地说
ls -v *.csv | xargs cat >> final.csv
-v 按版本号排序