根据文件名的一部分合并文件

时间:2017-10-20 17:26:10

标签: python linux csv

我在文件夹中有大约450个csv文件,其格式为名称(下面的示例名称):

1_a.csv

1_b.csv

1_c.csv

...

1_h.csv

2_a.csv

2_b.csv

...

2_h.csv

...

42_a.csv

...

42_h.csv

我希望将“1_xxx.csv”类型的所有文件合并到“1.csv”中,将所有格式为“2_xxx.csv”的文件合并为“2.csv”,依此类推。

我尝试过使用cat,但我一次只能合并一组文件。有没有办法在linux中循环运行命令?任何基于Python3的解决方案也是受欢迎的。

1 个答案:

答案 0 :(得分:0)

对于python解决方案,由mnistic提供的注释链接到解决方案。如果你想要一个bash解决方案,你可以使用带有-exec标志的find命令,如

find . -name "1_*.csv" -exec cat {} >> 1.csv \;

该命令应该找到所有以1_开头的csv文件,然后将它们附加到文件1.csv。

有关查找结帐https://ss64.com/bash/find.html

的详细信息

编辑: 对于循环

for i {1..450}
do
    find . -name "$i_*.csv" -exec cat {} >> $i.csv \;
done

这应该有效

来源:http://go2linux.garron.me/bash-for-loop/