Как объединить файлы командой 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