Announce

PukiWiki contents have been moved into SONOTS Plugin (20070703)

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