rename用スクリプト
ちょいっとリネーム用のスクリプトを書く
デジカメのファイルとかってJPGとRAWができるので
同時にリネームするの面倒だしなーって事で
同じベースファイル名を持つ拡張子の異なるファイルをまとめてリネームする
こんなシェルスクリプトを書いてみた
rename_all.sh
#!/bin/sh
SRC2FILE="$1"
TRG2FILE="$2"
SRC2BASENAME="${SRC2FILE%.*}"
SRC2EXTNAME="${SRC2FILE##*.}"
TRG2BASENAME="${TRG2FILE%.*}"
CHECKEXISTSFILE=0
for filename in `ls "${SRC2BASENAME}".*`; do
# find "$(dirname $SRC2FILE)" -type f -name "$(basename ${SRC2BASENAME}).*" | while read filename
# do
SRC2EXTNAME="${filename##*.}"
if [ -f "${TRG2BASENAME}.${SRC2EXTNAME}" ]; then
CHECKEXISTSFILE=1
fi
done
if [ $CHECKEXISTSFILE -eq 0 ]; then
for filename in `ls "${SRC2BASENAME}".*`; do
SRC2EXTNAME="${filename##*.}"
if [ -f "${SRC2BASENAME}.${SRC2EXTNAME}" -a ! -f "${TRG2BASENAME}.${SRC2EXTNAME}" ]; then
mv "${SRC2BASENAME}.${SRC2EXTNAME}" "${TRG2BASENAME}.${SRC2EXTNAME}" && echo "${SRC2BASENAME}.${SRC2EXTNAME} -> ${TRG2BASENAME}.${SRC2EXTNAME}"
fi
done
else
exit 1
fi
BSD仕様です
一応スペース付きのファイルも大丈夫なのを確認済み。linuxのlsの仕様はどうか知らないから知らない
test1.jpg test1.raw test1.xmp
の所で
$ rename.sh test1.jpg test2.jpg
とすると
test2.jpg test2.raw test2.xmp
こうなる