Como combinar arquivos com o comando unix cat com base no nome do arquivo e, em seguida, renomear?

1

Eu tenho um monte de arquivos CSV em um diretório como:

modfinalak_1.csv modfinalal_1.csv modfinalal_2.csv modfinalal_3.csv modfinalar_1.csv modfinalar_2.csv

então é um ou vários arquivos para cada estado dos EUA (AK, AL, AR, etc.). Como posso usar o cat para combinar todos os arquivos de cada estado e depois renomear o arquivo para o nome do estado?

No exemplo acima, quero modfinal_1.csv, modfinalal_2.csv e modfinalal_3.csv para serem combinados e renomeados para al.csv. Como você faz o gato fazer isso com base no texto antes do caractere '_'?

    
por tiredofcoding 08.08.2012 / 08:12

1 resposta

3

Algo como isso seria feito no bash (liste todas as abreviações de estado na lista entre in e ; ):

 for s in ak al ar ; do cat *${s}_*.csv > $s.csv ; done

Se você tiver as abreviações de estado em um arquivo states.txt , a linha pode ter esta aparência:

 for s in 'cat states.txt' ; do cat *${s}_*.csv > $s.csv ; done
    
por 08.08.2012 / 08:22