Como compactar arquivos csv com um padrão específico em um diretório usando o script de shell 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 zip 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 de correspondência (no zzz_timestamp.zip e yyy_timestamp.zip acima

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

Uma vez feito o zip, tenho que mover esses arquivos csv para o diretório do arquivo. Eu tenho que escrever um script unix.

Saída esperada:

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 essa tarefa.

Roots
fonte

Respostas:

2

Você sabe que você pode dar o nome do arquivo para zip?

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

zip yyy_timestamp.zip yyy_*.csv

você pode tentar antes da mão usando

echo yyy_*.csv

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

Archemar
fonte