我在目录中有一堆 CSV 文件,例如:
modfinalak_1.csv modfinalal_1.csv modfinalal_2.csv modfinalal_3.csv modfinalar_1.csv modfinalar_2.csv
因此每个美国州(AK、AL、AR 等)都有一个或多个文件。如何使用 cat 合并每个州的所有文件,然后将文件重命名为州名?
在上面的例子中,我希望将 modfinal_1.csv、modfinalal_2.csv 和 modfinalal_3.csv 合并并重命名为 al.csv。如何让 cat 根据“_”字符之前的文本执行此操作?
答案1
in
类似这样的操作可以在 bash 中完成(列出和之间的列表中的所有州缩写;
):
for s in ak al ar ; do cat *${s}_*.csv > $s.csv ; done
如果文件中有州缩写states.txt
,则该行可能如下所示:
for s in `cat states.txt` ; do cat *${s}_*.csv > $s.csv ; done