Как объединить файлы командой 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. Как заставить кошку сделать это на основе текста перед символом '_'?

1 ответ

Решение

Примерно так бы это сделать в 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
Другие вопросы по тегам