Como você os conhece, faça um loop pela lista de índices:
for i in 6 8 10 12;
do
cat state_1_result_${i}.csv >> final.csv
done
Você também pode usar um loop C:
for ((i=6; i<=12; i+=2))
Eu tenho um monte de csv na pasta. Quero combiná-los em um pedido.
Eu tenho os arquivos csv como
state_1_result_6.csv,
state_1_result_8.csv,
state_1_result_10.csv,
state_1_result_12.csv.....
Cada um dos csv tem uma linha sem cabeçalho, então o conteúdo de um state_i_result.csv
será como:
1,2,3,69,19,1,2,6,10,12,30,28
Eu quero combinar em tal ordem que a primeira linha será state_1_result_6.csv e a segunda linha será state_1_result_8.csv e assim por diante.
Eu tentei com
cat state*.csv > final.csv
Mas não está se fundindo em um pedido.
É bom ver que os índices estão logo antes da extensão do arquivo.
cat state*.csv > final.csv
considera a classificação por caracteres ascii. Ou seja, {6, 8, 10, 12} na classificação torna-se {10, 12, 6, 8}.
Na página de manual de ls , existe uma opção -v, que classifica de acordo com o número da versão, que é o que é necessário. Portanto, você pode usar
cat 'ls -v | grep .csv' > final.csv
se esses forem os únicos arquivos csv no diretório.
ou mais simplesmente
ls -v *.csv | xargs cat >> final.csv
-v por número de versão