파이프된 명령 출력을 변환하고 싶으십니까?

파이프된 명령 출력을 변환하고 싶으십니까?

file(0).jpg에서 file(100).jpg 형식의 파일이 포함된 폴더가 있습니다.

순서가 0,1,100,2,20,21,...이 되기 때문에 여기에서 변환을 직접 사용하여 PDF를 생성할 수 없습니다.

echo *.jpg(n)올바른 파일 순서를 지정하십시오.

파이프라인을 통해 어떻게 변환합니까?

나는 열심히 노력했다echo *.jpg(n) | convert - out.pdf

답변1

실행하려는 명령이 다음과 같은 경우

convert 'file(0).jpg' 'file(1).jpg' ...etc... 'file(100).jpg' out.pdf

그런 다음 글로브를 사용하거나

convert ./*.jpg(n) out.pdf

또는 패턴과 일치하는 0..100 범위의 파일만 포함합니다.

convert 'file('<0-100>').jpg'(n) out.pdf

또는 중괄호 확장을 사용할 수 있습니다.

convert 'file('{0..100}').jpg' out.pdf

하지만 이건 아니니 참고하세요와일드카드file(0).jpg, 전달된 문자열을 기존 파일 이름인지 여부로 변환합니다. file(100).jpg이전 파일과 달리 file(012).jpgexample이라는 파일도 손실됩니다.

답변2

파일이 많아 운영 체제의 명령줄 제한 사항에 도달하게 되면 "파일 이름 인용" 기능을 사용해야 합니다 convert.@

generate the list of files ... | convert @- out.pdf

*.jpg(n)glob 을 지원하지 않는 쉘에서는 zsh다음 명령을 사용하여 올바른 순서로 파일 목록을 생성할 수 있습니다.

echo 'file('?').jpg' 'file('??').jpg' 'file('???').jpg' | convert @- out.pdf

또는 중괄호 확장을 지원하는 셸을 사용하세요.

echo 'file('{?,??,???}').jpg' | convert @- out.pdf

이와 달리 {1..100}존재하는 파일만 일치합니다. 이는 대부분의 쉘에 내장되어 있으므로 echo운영 체제 명령줄에 의해 제한되지 않으므로 이 구성은 유용한 UUoE로 바뀔 수 있습니다.

관련 정보