如何将订单中的所有 CSV 合并为一个 CSV

如何将订单中的所有 CSV 合并为一个 CSV

我的文件夹中有一堆 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 按版本号排序

相关内容