ZSH: 명령을 전달하기 위해 파일 목록에서 경로, 파일 이름 및 확장자를 제거합니다.

ZSH: 명령을 전달하기 위해 파일 목록에서 경로, 파일 이름 및 확장자를 제거합니다.

명령 구문convert존재하다이미지 마술사

convert source_filename.ext1  destination_filename.ext2

zsh를 사용하여 폴더에서 파일을 공급 path_to_source하고 결과(이름은 같지만다른 확장자) 폴더 path_to_destination.

나는 findand 를 사용하여 이것을 달성할 수 있다고 믿지만 xargs작동하는 것은 아무것도 찾지 못했습니다. 나는 또한 ZSH에 이에 유용한 몇 가지 내장 기능이 있을 것이라고 생각했습니다. 어떤 조언이라도 대단히 감사하겠습니다.

노트:내가 아는 한, convert일괄 파일을 처리하는 기본 방법이 없으므로 파일을 하나씩 제공해야 합니다. 두 경우 모두 이러한 매개변수를 사용하여 파일별로 명령 파일을 제공하는 문제를 해결하는 데 관심이 있습니다.

답변1

for x in /path/to/source/**/*.ext1; do convert $x ${x:r}.ext2 done

지금 r${x:r}기록 수정자. for일부 문자를 저장하는 짧은 형식이 있습니다 .

for x (/path/to/source/**/*.ext1) convert $x ${x:r}.ext2

답변2

나는 이렇게 할 것이다:

cd path_to_source
find . | sed 's/.ext1$//' | xargs convert {}.ext1 ../path_to_destination/{}.ext2

답변3

파일을 일괄 처리하고 옵션(시작 위치)을 사용하여 한 형식에서 다른 형식으로 변환하여 mogrify처리된 이미지를 출력할 다른 디렉터리를 지정할 수 있습니다.-pathimagemagick v6.2.0

mogrify -path /path/to/dest_filename -format ext2 /path/to/source_filename/*.ext1

예를 들어

mogrify -path /home/myjpgs -format jpg /media/images/*.png

동일한 파일 이름을 유지하기 위해 디렉토리 .png의 모든 이미지를 변환하고 (확장자만 변경됨) 결과 이미지를 다음 위치에 저장합니다./media/imagesjpg/home/myjpgs

관련 정보