파일이 나열되는 순서

파일이 나열되는 순서

디렉토리에 파일 목록이 있는 경우

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
...

명령에 입력 파일로 ullman*.pbm사용하고 전달할 때 다음 순서로 어떻게 만들 수 있습니까?convert ullman*.pbm ullman.pdf

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
...

감사해요?

답변1

GNU는 성공할 sort수도 있다xargs

printf '%s\0' ullman*.pbm | sort -z -k2,2n -t'-' | xargs -0 convert 

먼저 호출하지 않고 파일을 나열하여 이것이 작동하는지 확인하십시오.convert

printf '%s\0' 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
...

하지만

printf '%s\0' ullman*.pbm  | xargs -0 printf '%s\n'                                                              
ullman-000.pbm
ullman-001.pbm
ullman-098.pbm
ullman-099.pbm
ullman-1000.pbm
..
..

답변2

한 가지 방법은 3자리 숫자의 파일 이름을 4자리 숫자로 바꾸고 파일 이름을 0으로 채우는 것입니다. 이미 설치되어 있는 경우 perl-rename(Ubuntu의 경우 기본값) 다음을 시도해 볼 수 있습니다.

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

결과에 만족하면 사용을 중단하십시오 -n.

아니면 다른 옵션도 확인해 보세요파일 이름의 숫자를 고정 길이로 패드.

관련 정보