여러 확장 프로그램 처리

여러 확장 프로그램 처리

재귀적 .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
  1. POSIX에서는 공백으로 구분된 여러 GLOB를 넣을 수 있습니다.
  2. 실제 확장자는 소문자 jpg또는 대문자 ether JPG이지만 대소문자를 혼합할 수는 없습니다.
  3. 파일 이 없으면 JPGglob은 확장되지 않고 var a의 값은 입니다 *.JP*. hte 파일이 있는지 확인하여 필터링해야 합니다.[ -f "$a" ]

관련 정보