如何根据文件名使用 unix cat 命令合并文件,然后重命名?

如何根据文件名使用 unix cat 命令合并文件,然后重命名?

我在目录中有一堆 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

相关内容