我在一个文件夹中有大约 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
这应该可行
关于python - 根据文件名的一部分合并文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854305/