06.bconvert
一括 convert (batch convert)
| 投稿者 | s1080134 |
|---|---|
| 作成日 | 2001/07 (学部2年前期) |
| 最終更新日 | 2003/09/09 |
| 言語 | bash |
| Table of Contents |
説明
convert コマンドで一度に複数ファイルを指定するための CUI フロントエンドです。
後期:この頃は mogrify コマンドがなかったような気がします(もしくは知らなかっただけか)
書式
使い方は以下のようになっています。
bconvert: batch convert. convert front end.
Usage: bconvert [[convert options] :] files ... ext
ex) bconvert *.png jpg
ex) bconvert : *.png jpg
ex) bconvert -size 1024x768 : *.png ../*.gif jpg
convert コマンドのオプションを使用する際は、 bconvert 自体の引数と区別するために : で区切ってください。 'files ... ext' のようにクォーテーションで挟んでもらう案も考えたのですが、 2 文字より 1 文字だろうということで : を採用しました。
ソースコード
#!/usr/local/bin/bash
# Copyright (C) Naotoshi Seo, s1080134
function printUsage(){
cmd=${0##*/}
echo "Batch convert. convert front end." 1>&2
echo "Usage: $cmd [[convert options] :] files ... ext" 1>&2
echo " ex) $cmd *.png jpg" 1>&2
echo " ex) $cmd : *.png jpg" 1>&2
echo " ex) $cmd -size 1024x768 : *.png ../*.gif jpg" 1>&2
}
if [ $# -lt 2 ]; then
printUsage
exit 0
fi
if [ "$1" = ":" ];then
shift
elif [ $(expr "x$1" : 'x-') -ne 0 ];then
#Options
while [ $# -gt 0 ]
do
if [ "$1" = ":" ];then
shift
break
fi
options="$options$1 "
shift
done
if [ $# -eq 0 ]; then
printUsage
exit 1
fi
fi
#$@ become files ... ext
while [ $# -gt 0 ]
do
case $# in
1)
ext=$1
break
esac
files="$files $1"
shift
done
#main
for file in $files
do
echo "convert $options$file ${file%.*}.$ext"
convert $options$file ${file%.*}.$ext
if [ "$?" != "0" ];then
break
fi
done
