내 사진 컬렉션을 TV에 보여주고 싶습니다. 이렇게 하려면 1920x1080px 창에 맞게 사진 크기를 조정해야 합니다(원본을 처리할 때 성능이 형편없기 때문입니다).
내 예상 구조는 다음과 같습니다
/path/to/originalphotos/
/path/to/originalphotos/2016/2016-01-01 Description/DSC_1234.JPG
/path/to/originalphotos/2019/2019-12-31 Description/DSC_5678.JPG
/path/to/thumbnails/
/path/to/thumbnails/2016/2016-01-01 Description/DSC_1234_thumb.JPG
/path/to/thumbnails/2019/2019-12-31 Description/DSC_5678_thumb.JPG
/path/to/originalphotos/
Imagemagick의 유틸리티를 사용하여 해당 하위 디렉터리에 있는 각 파일의 축소판을 반복하고 생성하는 스크립트를 생성하려고 합니다 convert
..JPG
지금까지 내 Bash 스크립트는 다음과 같습니다.
#!/bin/bash
SOURCE_PATH="/path/to/originalphotos/"
DESTINATION_PATH="/path/to/thumbnails/"
find "$SOURCE_PATH" -type f -iname '*.jpg' -exec sh -c 'echo convert \"$1\" -auto-orient -resize 1920x1080\> --write \"$DESTINATION_PATH${0%}_thumb.JPG\"' -- {} \;
echo
데이터 저장을 피하기 위해 이것을 추가했습니다 .
썸네일을 올바르게 저장하는 데 도움을 주실 수 있나요?
내 폴더 이름 중 일부에 덴마크 특수 문자(Æ, Ø, Å)가 포함되어 있기 때문에 나중에 문제가 발생할 것 같은 느낌이 듭니다.
답변1
폴더 이름이 전혀 문제가 될 것이라고 생각하지 않습니다. 하지만 find
구문을 더 간단하게 만들기 위해 쉘 글로빙을 대신 사용하는 것이 좋습니다 . 이 같은:
shopt -s globstar nullglob
destination=/path/to/thumbnails
cd /path/to/originalphotos
for i in **/*{jpg,JPG}; do
dirName=${i%/*}
file=$(basename "$i")
fileName="${file%.*}"
echo convert "$i" -auto-orient -resize 1920x1080\> \
--write "$destination/${fileName}_thumb.JPG"
done
jpg
그러면 파일 이 처리되지만 모든 엄지 손가락은 처음 인지 여부에 관계없이 종료 JPG
됩니다 . 이것이 문제라면 다음과 같이 할 수 있습니다..JPG
.jpg
.JPG
for i in **/*{jpg,JPG}; do
dirName=${i%/*}
file=$(basename "$i")
fileName="${file%.*}"
ext="${file##*.}"
echo convert "$i" -auto-orient -resize 1920x1080\> \
--write "$destination/${fileName}_thumb.$ext"
done