재귀적 .jpg 파일을 다른 크기로 변환하는 스크립트를 작성했습니다.
echo $re
mkdir "$re"_tmp
for a in *.jpg ; do convert "$a" -resize $re "$re""_tmp/${a%.*} ["$re"].jpg" ; done
png, bmp 등 다중 확장 지원을 통합하고 싶습니다. 더 나은 점은 다음과 같습니다.
FILEFORMAT="jpg, JPG, png, PNG, bmp, BMP"
그것을 만들 아이디어가 있습니까?
추신: re 변수는 새로운 크기 1024x768(또는 800x600 등)입니다.
답변1
내가 올바르게 이해했다면 jpg
.
for a in *.{jpg,JPG,png,PNG,bmp,BMP}; do
printf '%s\n' "$a"
# do your stuff here
done
{...}
bash 함수가 호출됩니다.버팀대 확장.
답변2
공백으로 구분된 여러 GLOB 표현식을 사용할 수 있습니다.
for a in *.[jJ][pP][gG] \
*.[jJ][pP][eE][gG] \
*.[pP][nN][gG] \
*.[bB][mM][pP]
do
echo "$a" "$re/$a"
done
# or inline
for a in *.[jJ][pP][gG] *.[jJ][pP][eE][gG] *.[pP][nN][gG] *.[bB][mM][pP] ; do echo "$a" "$re/$a"; done
POSIX 규격인지는 확실하지 않지만 그렇다고 믿습니다.
답변3
이것은 POSIX 불만 사항 변형입니다.
for a in *.jp* *.JP*; do
[ -f "$a" ] || continue
echo "Processing $a"
done
- POSIX에서는 공백으로 구분된 여러 GLOB를 넣을 수 있습니다.
- 실제 확장자는 소문자
jpg
또는 대문자 etherJPG
이지만 대소문자를 혼합할 수는 없습니다. - 파일 이 없으면
JPG
glob은 확장되지 않고 vara
의 값은 입니다*.JP*
. hte 파일이 있는지 확인하여 필터링해야 합니다.[ -f "$a" ]