如何将文件与基于文件名的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。 如何根据“_”字符之前的文字让猫做到这一点?

像这样的东西会在bash中列出(列出in;之间的列表中的所有状态缩写):

  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