ordem para listar arquivos

2

Se eu tiver uma lista de arquivos em um diretório

ullman-000.pbm
ullman-001.pbm
...
ullman-098.pbm
ullman-099.pbm
ullman-1000.pbm
ullman-1001.pbm
ullman-1002.pbm
ullman-1003.pbm
ullman-1004.pbm
ullman-1005.pbm
ullman-1006.pbm
ullman-1007.pbm
ullman-1008.pbm
ullman-1009.pbm
ullman-100.pbm
ullman-1010.pbm
ullman-1011.pbm
ullman-1012.pbm
ullman-1013.pbm
ullman-1014.pbm
ullman-1015.pbm
ullman-1016.pbm
...

Ao usar ullman*.pbm para se referir a eles e passá-lo para o comando convert ullman*.pbm ullman.pdf como arquivos de entrada, como posso fazê-los na ordem de

ullman-000.pbm
ullman-001.pbm
...
ullman-098.pbm
ullman-099.pbm
ullman-100.pbm
...
ullman-999.pbm
ullman-1000.pbm
ullman-1001.pbm
ullman-1002.pbm
ullman-1003.pbm
ullman-1004.pbm
ullman-1005.pbm
ullman-1006.pbm
ullman-1007.pbm
ullman-1008.pbm
ullman-1009.pbm
ullman-1010.pbm
ullman-1011.pbm
ullman-1012.pbm
ullman-1013.pbm
ullman-1014.pbm
ullman-1015.pbm
ullman-1016.pbm
...

Obrigado?

    
por Tim 07.12.2014 / 16:21

2 respostas

2

O GNU sort e o xargs podem fazer o truque

printf '%s
printf '%s
printf '%s
printf '%s
printf '%s
printf '%s%pre%' ullman*.pbm  | xargs -0 printf '%s\n'                                                              
ullman-000.pbm
ullman-001.pbm
ullman-098.pbm
ullman-099.pbm
ullman-1000.pbm
..
..
' ullman*.pbm | sort -z -k2,2n -t'-' | xargs -0 printf '%s\n' ullman-000.pbm ullman-001.pbm ullman-098.pbm ullman-099.pbm ullman-100.pbm ullman-1000.pbm ...
' ullman*.pbm | sort -z -k2,2n -t'-' | xargs -0 convert
' ullman*.pbm | xargs -0 printf '%s\n' ullman-000.pbm ullman-001.pbm ullman-098.pbm ullman-099.pbm ullman-1000.pbm .. ..
' ullman*.pbm | sort -z -k2,2n -t'-' | xargs -0 printf '%s\n' ullman-000.pbm ullman-001.pbm ullman-098.pbm ullman-099.pbm ullman-100.pbm ullman-1000.pbm ...
' ullman*.pbm | sort -z -k2,2n -t'-' | xargs -0 convert

Primeiro, verifique se isso funciona listando os arquivos sem chamar convert

%pre%

Considerando que

%pre%     
por 07.12.2014 / 18:17
1

Uma maneira seria renomear os arquivos que possuem números de três dígitos para números de quatro dígitos, preenchidos com um zero. Se você tem perl-rename (instalado por padrão no Ubuntu), você pode tentar:

rename -n 's/-(\d{3}\.)/-0$1/' *.pbm

Quando estiver satisfeito com o resultado, execute novamente sem o -n .

Ou veja outras opções em Preenchendo um número em um nome de arquivo para um tamanho fixo .

    
por 07.12.2014 / 16:39