Eu tenho um arquivo de 100 GB e quero dividir em 100 de 1 GB cada (por quebra de linha)
por exemplo
split --bytes=1024M /path/to/input /path/to/output
Para os 100 arquivos gerados, quero aplicar o gzip / zip a cada um desses arquivos.
É possível usar um único comando?
--line-bytes=1024M
.Respostas:
Use "--filter":
split --bytes=1024M --filter='gzip > $FILE.gz' /path/to/input /path/to/output
fonte
Um one-liner usando um condicional é o mais próximo possível.
gzip
só será executado sesplit
for bem-sucedido por causa da condicional&&
que também está entrecd
e tambémsplit
para garantir quecd
seja bem-sucedido. Observe quesplit
egzip
gera para o diretório atual em vez de ter a capacidade de especificar o diretório de saída. Você pode criar o diretório, se necessário:Para juntar tudo novamente:
fonte
O uso deste comando com a
-d
opção permite gerar sufixos numéricos.Arquivos gerados:
fonte