Como compactar arquivos csv com um padrão específico em um diretório usando o shell script unix

0

Eu tenho arquivos em um diretório Linux. Alguns dos arquivos estão listados abaixo

-rw-rw-r--. 1 roots roots 0 Dec 23 02:17 zzz_123_00000_A_1.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_121_00000_A_2.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_124_00000_A_3.csv
drwxrwxr-x. 2 roots roots 6 Dec 23 02:18 zzz
-rw-rw-r--. 1 roots roots 0 Dec 23 02:54 yyy_123_343434_A_1.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:55 yyy_123_343434_A_1.xml
-rw-rw-r--. 1 roots roots 0 Dec 23 02:55 yyy_1254_343434_A_1.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:55 yyy_1254_343434_A_1.txt
drwxrwxr-x. 2 roots roots 6 Dec 23 02:56 yyy

Agora eu tenho que zipar apenas arquivos .csv da lista acima, com base no padrão de nome de arquivo inicial. O nome do arquivo zip deve ser o padrão correspondente (no zzz_timestamp.zip e yyy_timestamp.zip acima).

No meu diretório, outros formatos de arquivo também estão lá com o mesmo nome. E meu direcotry pode ter subdiretório também. Eu não deveria considerar outros arquivos e subdiretórios para o processo zip.

Quando o zip estiver pronto, tenho que mover esses arquivos csv para o diretório de arquivamento. Eu tenho que escrever um script unix.

Resultado esperado:

zzz_timestamp.zip deve ter zzz_123_00000_A_1.csv, zzz_121_00000_A_2.csv e zzz_124_00000_A_3.csv

yyy_timestamp.zip deve ter yyy_123_343434_A_1.csv, yyy_1254_343434_A_1.csv

Por favor, deixe-me saber como implementar esta tarefa.

    
por Roots 23.12.2016 / 09:19

1 resposta

2

Você sabe que pode dar um nome de arquivo ao zip?

zip zzz_timestamp.zip zzz_???_000000_1_?.csv

zip yyy_timestamp.zip yyy_*.csv

você pode experimentar antes de usar

echo yyy_*.csv

para ver se a expansão do shell corresponde à sua necessidade.

    
por 23.12.2016 / 15:40