Como posso classificar uma lista de nomes de arquivos por alguma substring do nome?

5

Eu tenho vários arquivos com nomes como:

beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf

Gostaria de poder classificar uma lista desses nomes de arquivos pelos vários num s e passar a lista classificada para vários utilitários de linha de comando. Por exemplo, se eu estivesse classificando por num2 , eu desejaria o pedido:

beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf

Eu tenho um script python para fazer isso, mas parece que deve ser possível apenas com filtros como sed e sort .

Existe alguma maneira fácil de classificar por partes de um nome de arquivo, usando apenas filtros de linha de comando comuns?

    
por Dan 16.08.2013 / 22:41

1 resposta

5

O GNU sort com a opção -g(--general-numeric-sort) deve ser capaz de fazer o truque

sort -k5,5g -t '_'  <<!
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
!
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
    
por 17.08.2013 / 00:31