間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

ファイルリネームスクリプト

http://www.linux.or.jp/JF/JFdocs/Bash-Prog-Intro-HOWTO-12.html

bash -x ~/bin/renna.sh p D_ *.JPG 2>> /tmp/rename.log

若干修正版

#!/bin/sh
# renna: いくつかのルールに従って、複数のファイルをリネームする
# スクリプト: Felix Hudson Jan 2000 


# 最初にこのプログラムが取るいくつかの「モード」についてチェックする
# 第一引数($1)の条件が一致するなら、プログラムの該当部分を実行して
# 終了する

# モード変数($1)と prefix ($2)を取り除く
prefix=$2 ; shift ; shift


# ファイルが指定されているか簡単にチェックする
# 指定されていないときは、存在しないファイルをリネームすることは
# できないので、なにもしない             
if [$1 = ]; then
     echo "no files given"
     exit 0
fi


# プログラムの引数となるファイルを順にループ処理する
# ファイルをひとつずつリネームする
for file in $*
    do
    mv ${file} $prefix$file
done

# ここでプログラムを終了する
    exit 0
fi


# suffix をリネームするかチェックする
# ここでの残りの部分は上記とおなじ処理なので、そちらを見てほしい
if [ $1 = s ]; then
    suffix=$2 ; shift ; shift

if [$1 = ]; then
    echo "no files given"
    exit 0
fi

for file in $*
    do
     mv ${file} $file$suffix
    done
    exit 0
fi


# 名前の置き換えかどうかをチェックする
if [ $1 = r ]; then
    shift

# ユーザが処理の内容を指定しなかったとしてもファイルがダメージを
# 受けないように、次のコードを含めた
if [ $# -lt 3 ] ; then
    echo "usage: renna r [expression] [replacement] files... "
    exit 0
fi


# 余計な情報を削除する
OLD=$1 ; NEW=$2 ; shift ; shift


# この for ループはプログラムに与えられたファイルを順に処理する
# sed というプログラムを使って、ファイルをひとつずつリネームする
# sed は標準入力を読み込んで、特定の表現を与えられた文字列に置換する
# ここでは、標準入力からファイル名を指定して、必要な文字を置換させる
for file in $*
    do
     new=`echo ${file} | sed s/${OLD}/${NEW}/g`
     mv ${file} $new
    done
    exit 0
fi


# ここまで来たとすると、プログラムに引数がなかったということなので、
# 使い方を表示する
echo "usage;"
echo " renna p [prefix] files.."
echo " renna s [suffix] files.."
echo " renna r [expression] [replacement] files.."
exit 0


# 終了
このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。