シェルスクリプトで画像をリサイズ改造
シェルスクリプトで画像をリサイズの続き。リサイズ後のファイルも同じタイムスタンプ(更新時刻)になるように。
#!/usr/bin/zsh size=`zenity --entry --title=画像サイズを指定 --entry-text=640 --text=長辺のピクセル数を入力` if [ $? -eq 0 ] ;then if [[ $size =~ "[^0-9]" ]] then zenity --info --text=数字を指定 else for fullpath in $* do filename=${fullpath##*/} basename=${filename%.*} dirname=${fullpath%/*} extension=${fullpath##*.} newfilename=${size}_$basename.`echo $extension | tr "[A-Z]" "[a-z]"` chdir $dirname filetime=`ls -l $filename | sed 's/ +/ /g' \ | cut --delimiter=' ' -f6-7 | sed 's/[-: ]//g'` convert $filename -geometry ${size}\x${size} $newfilename touch -t $filetime $newfilename done fi else zenity --info --text=キャンセルされました。 fi
ファイルのタイムスタンプを表示するコマンドはないようなので、参考書を見ながら多段パイプで対応。
Linuxシェルスクリプトユーザー便利帳 (QUICK MASTER 16)
- 作者: 伊藤幸夫,寒川陽美
- 出版社/メーカー: 秀和システム
- 発売日: 2007/02/28
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (4件) を見る
touchコマンドの−tオプションに渡す文字列のフォーマットの「.」の部分が見えにくかったんで、「12桁やったらtouchコマンドはどう解釈するんや」と悩んだ。