Saída de linha de comando para dividir arquivos

2

Eu quero ser capaz de dividir uma saída de uma linha de comando que entra em um arquivo. Quero que uma ou ambas as maneiras a seguir sejam divididas:

  • Divida com base no tamanho do arquivo. Se chegar a dizer 500kb, crie um novo arquivo
  • Divida com base nas linhas no arquivo. Se chegar a 1000 linhas, crie um novo arquivo

Claro, isso também significa que preciso de um nome de variável para a saída

Este é o comando que estou executando agora:

java -jar "C:\Processors\myProcessor.jar" >> "C:\Processors\myprocessor.log"

Gostaria que o 'myprocessor.log' fosse dividido em arquivos de acordo.

    
por elcool 24.01.2011 / 18:17

3 respostas

4

O comando split faz exatamente o que você procura, com opções para dividir em tamanho de arquivo ou contagem de linhas. De a página do manual :

split - split a file into pieces

Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is 'x'. With no INPUT, or when INPUT is -, read standard input.

...snip...

-b, --bytes=SIZE put SIZE bytes per output file

-l, --lines=NUMBER put NUMBER lines per output file

Você pode obter o comando split no pacote GnuWin32 CoreUtils para uso em uma máquina Windows.

    
por 24.01.2011 / 19:48
0

Se você quiser fazer isso sem modificar o myProcessor.jar, será necessário pós-processar o arquivo de log. Eu suspeito que você poderia fazer isso dentro de Powershell, mas não é imediatamente aparente para mim como. Não há nada no Windows para fazer isso.

    
por 24.01.2011 / 19:03
0

Eu acredito que o que você está tentando fazer requer escrever um script, pelo menos (a linha de comando não ajuda)

para propósitos de script, eu recomendaria escrever um script Ruby (Ruby é uma linguagem muito poderosa e extremamente fácil de aprender - muito amigável). escrever um arquivo de lote para fazer isso vai comer o seu cérebro (pelo menos ele seria meu)

    
por 24.01.2011 / 19:07