dividindo um arquivo em arquivos menores com sufixo numérico

1

Eu tenho um arquivo com 20000 linhas e quero dividi-lo em arquivos menores com um sufixo numérico, cada um com duas linhas. Então, muito simplesmente estou usando

split -l 2 -d my_file my_file_new

Os arquivos de saída com sufixo numérico não estão em ordem, o que significa que eu recebo arquivos de 00 a 89 e depois, em vez de 90, 91,92, ... ele salta para 9000, 9001! Alguém sabe o que pode estar errado?

    
por Anna1364 30.09.2017 / 23:48

1 resposta

0

Isso parece ser por design, para que, quando você listar os arquivos ou usar um curinga para corresponder a todos eles, eles sejam mostrados na ordem correta. Se os nomes forem estritamente sequenciais, o sufixo 99 será seguido por 100 , mas filename.100 classificará entre filename.10 e filename.11 (nomes de arquivos são normalmente classificados lexicograficamente, não numericamente).

Assim, quando chega aos anos 90, adiciona mais dígitos ao sufixo, para garantir que os arquivos adicionais sejam classificados corretamente se houver mais de 10. Eu suponho que ele poderia ter esperado até 99 , e então continuado com 9900 , 9901 , etc., mas quando atingir 9999 ele terá que adicionar dígitos novamente; aumentando em 90 significa que ele pode manipular mais 1000 arquivos antes de crescer.

Como mencionado nos comentários, você pode usar a opção -a para especificar o comprimento do sufixo em vez de deixá-lo escolher o padrão (iniciando em 2 dígitos até atingir 90 ).

    
por 04.10.2017 / 20:16