こちらのスクリプトとほぼ同じです。
やりたいことの違いは、出力フォーマットが
IMG_0001.jpgなど4桁でゼロ埋めとしたいという点のみです。
スクリプトの違いは
if文で桁数を判定している点と
ゼロ埋め用の変数を追加している点のみです。
#!/usr/bin/csh -f
set IMG = "IMG_"
set EXTENTION = ".jpg"
set ZERO = "0"
@ number = 1
# remove the space for foreach
set INTENDED_FILES = `ls $argv[1] | sed 's/\ (/(/'`
foreach i ($INTENDED_FILES)
if($number < 10) then
set NUMBER_4DIGIT = ${ZERO}${ZERO}${ZERO}${number}
else if(10 <= $number && $number < 100) then
set NUMBER_4DIGIT = ${ZERO}${ZERO}${number}
else if(100 <= $number && $number < 1000) then
set NUMBER_4DIGIT = ${ZERO}${number}
else if(1000 <= $number && $number < 10000) then
set NUMBER_4DIGIT = $number
else
echo "over 9999."
exit
endif
set NEW_FILE = ${IMG}${NUMBER_4DIGIT}${EXTENTION}
#set NEW_FILE = ${IMG}${number}${EXTENTION}
echo $i | sed 's/(/\\\ \\\\(/' | sed 's/)/\\\\)/' > tmp
set file_name = `cat tmp`
echo "mv $argv[1]/$file_name $argv[1]/$NEW_FILE"
#mv $argv[1]/$file_name $argv[1]/$NEW_FILE #-> can't execute
@ number++
end
スクリプトを作った背景持っているデジカメがIMG_0001.jpgといったフォーマットでないと
写真をデジカメの画面に表示しない仕様のようなので、
上記フォーマットでない名前の写真(例えば、他社のデジカメで撮った写真)を
画面表示しようとしてもファイル名を変更しないと見られない状況だった。
写真の枚数は300枚くらいあるので、
手作業は面倒ということでWindows上でファイルを全選択して
一括でファイル名を変更したら、IMG_0001 (1).jpgなどといった
ファイルが大量にできてしまい、手作業では非常に面倒なことになった。
そこで、スクリプトを書いて自動でできるようにしたかった。