Назад | Перейти на главную страницу

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

Что-то вроде этого можно было бы сделать в 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