대상에 하위 디렉터리가 누락된 경우 'convert' 명령에 문제가 발생함

대상에 하위 디렉터리가 누락된 경우 'convert' 명령에 문제가 발생함

src하위 디렉토리와 기타 이미지로 가득 찬 디렉토리가 있습니다 . 하나의 bash 문을 사용하여 다음과 같이 호출되는 다른 대상 디렉터리에 맞게 자동으로 크기를 조정하려고 했습니다 thumb.

find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;

디렉토리 thumb가 처음에는 비어 있고 src.

을 찾아보았지만 man convert에 디렉토리를 자동으로 만드는 옵션을 찾을 수 없는 것 같습니다 convert. 내 모든 이미지를 디렉토리의 썸네일 크기로 변환하는 효과적인 방법은 무엇입니까 thumb? 모든 하위 디렉터리를 미리 만들어야 합니까?


편집하다

위의 명령 앞에 다음과 같이 했습니다.

find ./src -type d -follow -exec mkdir -p "thumb/${size}/{}" \;

그런데 두 명령이 아닌 하나의 명령으로 모든 것을 할 수 있을지 궁금합니다.

답변1

UNIX 철학은 한 가지 일만 수행하는 명령을 갖는 것입니다. 대신 파일에 쓸 수 있는 명령표준 출력이미 이 규칙을 확장하고 있습니다.

하나의 명령으로 모든 작업을 수행할 수 있는지 여부는 정의에 따라 다릅니다. 다음을 수행합니다.

find ./src -type f -follow -iname '*.jp*g' -exec /bin/sh -c \
'mkdir -p `dirname "thumb/'${size}'/{}"` &&'\
'convert -resize 150x150x "{}" "./thumb/'${size}'/{}' \;

하나 또는 여러 개의 명령으로 계산됩니다: find, sh, mkdir, dirname, convert? 줄바꿈은 단지“가독성”.

관련 정보