이미지의 변환을 자동화하는 방법?어떻게이 같은 이미지를 변환 할 수 있습니다
모든 이미지는 .jpg
확장자라고 가정 할 수 있습니다.
작업 디렉토리의 하위 디렉토리 안에있는 모든 이미지의 변환을 자동화하기 쉬운 솔루션이 바람직합니다.
이미지의 변환을 자동화하는 방법?어떻게이 같은 이미지를 변환 할 수 있습니다
모든 이미지는 .jpg
확장자라고 가정 할 수 있습니다.
작업 디렉토리의 하위 디렉토리 안에있는 모든 이미지의 변환을 자동화하기 쉬운 솔루션이 바람직합니다.
당신은 패턴의 확장을 루프를 사용할 수 있습니다
for img in */*.jpg ; do
convert -resize 50% "$img" "${img%.jpg}"_50.jpg
done
${variable%pattern}
은 $ 변수의 오른쪽에서 패턴을 제거합니다.
또한 LS + AWK를 사용하여이 (덜 우아) 한 줄을 시도 할 수 있습니다 :
는ls *.jpg | awk -F '.' '{print "convert -resize 50% "$0" "$1"_50.jpg"}' | sh
이 모든 .JPG 파일이 현재 디렉토리에 있다고 가정합니다. 이 프로그램을 실행하기 전에 | sh
을 제거하고 화면에 무엇이 인쇄되어 있는지 확인하십시오.
당신은 find -exec
을 사용할 수 있습니다 : 그것은 {}
을 사용하여 참조 할 수있는
find -type f -name '*.jpg' -exec \
bash -c 'convert -resize 50% "$0" "${0%.jpg}"_50.jpg' {} \;
find -type f -name '*.jpg'
는 -exec
후 명령에 모든 .jpg
(하위 디렉토리 포함) 파일과 손을 찾습니다.
매개 변수 확장을 사용하므로 -exec convert -resize
을 직접 사용할 수 없습니다. 우리는 bash -c
으로 전화를 걸어 {}
을 위치 매개 변수로 제공해야합니다 (명령 내에 $0
). \;
는 -exec
명령의 끝을 표시합니다.
한 빠른 질문 : 그것은 재귀, 새로 생성 된 파일은 수'.jpg' 것입니다 원인이됩니까? 'find'는 전체 목록을 먼저 버퍼링합니까, 아니면 일괄 적으로 파일을 찾습니까? 그것은 나를 위해 ~ 200의 파일 개수와 함께 작동하는 것 같다. – anishsane
그것은하지 않는 것,하지만 난 정확한 동작을 확인하기 위해 당신에게 견적을 표시하기 위해 문서에 파고해야 할 것 @anishsane. –
고마워요! 이것은 내가 찾고 있었던 것이지만, 패턴 확장을 제대로 할 수는 없습니다. 마지막 문장에서 당신의 설명이 나를 도왔고, 내가 뭘 잘못하고 있는지 이해했습니다. –
에만 하위 디렉토리에있는 파일을 찾아 내고, 한 레벨 만 깊이 - 또는 여기 설정에 약간의'shopt'를 놓친 거지? –
'shopt -s globstar; **/*. jpg의 img는 나를 위해 작동합니다. –