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

标签 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 的解决方案。

最佳答案

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

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/

关于python - 根据文件名的一部分合并文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854305/

相关文章:

Python脚本不写入txt文件

linux - Bash脚本运行顺序,为什么它会对读取命令进行排队?

linux - 在 Linux 中将相关数据行分组到单个列中

python - 预期密集输入具有形状 (7,),但得到形状为 (1,) 的数组

Python 在特定子字符串前提取一个十进制数

python - 按类的元素返回 None

linux - 对具有不均匀字段的行进行排序

java - 如何以对未闭合的双引号字符具有鲁棒性的方式解析大型 CSV 文件?

python - 如何在单独的行和列上正确编写 CSV 文件?

python - 如何使用 mySQL 的 Python 连接器来替换为多行