GNU ordenar nomes de arquivos com prefixo e um ou dois dígitos

0

Eu gostaria de usar a classificação GNU para ter os nomes dos arquivos de um comando find ordenado pelos números no nome. O nome do arquivo é "ciclo", em seguida, o primeiro número a ser classificado, em seguida, ".subset", depois o segundo número a ser classificado e, em seguida, "." então o terceiro número para classificar. Uma classificação simples não funciona, já que o primeiro número pode conter um ou mais dígitos:

find /tmp/folder/ -name "cycle*"  | sort
/tmp/folder/cycle10.subset1.2
/tmp/folder/cycle11.subset1.2
/tmp/folder/cycle12.subset1.2
/tmp/folder/cycle1.subset1.2
/tmp/folder/cycle2.subset1.2
/tmp/folder/cycle3.subset1.2
/tmp/folder/cycle4.subset1.2
/tmp/folder/cycle5.subset1.2
/tmp/folder/cycle6.subset1.2
/tmp/folder/cycle7.subset1.2
/tmp/folder/cycle8.subset1.2
/tmp/folder/cycle9.subset1.2
[...]

Alguma idéia?

    
por 719016 29.12.2014 / 14:59

2 respostas

1
... | sort --debug -n -t/ -k4.6

--debug dirá o que sort considera para a comparação enquanto executa seu trabalho.
Remova-o para o uso real.

sort --help lista as opções disponíveis, man sort pode informar mais.

    
por 29.12.2014 / 15:52
0

Qualquer caractere pode ser o separador de campo:

-t, --field-separator=SEP
use SEP em vez de não-branco para transição em branco

... | sort --debug -n -ty -k2.4 e ... | sort --debug -n -tl -k3.2 e ... | sort --debug -n -te -k3.1

    
por 29.12.2014 / 18:28