- 2005/11/20 13:24:59
ファイル名称を全部小文字に変更
ファイル名称を全部小文字に変更するには、次のようにします。
#!/bin/bash -x
for f in *
do
mv $f `echo $f | tr '[A-Z]' '[a-z]'`
done
ファイル名称の一部をまとめて変更
フィル名称の一部をまとめて変更する場合には、次のようにします。この例では、拡張子を変えずに名前だけ新しくしています。
#!/bin/bash -x
OLD=aaa
NEW=bbb
for f in $OLD*
do
SUFFIX=`expr $f : '$OLD\(.*\)'
mv $OLD$SUFFIX $NEW$SUFFIX
done
ファイルの拡張子一括置換
複数のファイルの拡張子を一気に置換するスクリプトは、 bashを使って、次のようになります。パターン照合演算子を使っています。
デバグをするときには、#!/bin/bash -x としておきます。デバグが終了したら、#!/bin/bash と直しておきます。
#!/bin/bash -x
PATH=/usr/bin:/bin
if [ $# -lt 2 ]; then
echo "Usage: $0 "
echo "example: $0 .html .htm"
exit
fi
suffix1=$1
suffix2=$2
if [ "${suffix1#.}" != $suffix1 ]; then
suffix1=${suffix1#.}
fi
if [ "${suffix2#.}" != $suffix2 ]; then
suffix2=${suffix2#.}
fi
for i in *.$suffix1
do
if [ -f $i ]; then
newname=$(basename $i .$suffix1).$suffix2
mv $i $newname
fi
done
ファイル内の文字列一括置換
.htmlで終了するテキストファイル内で、文字を一括置換したい場合には、次のようなシェルスクリプトファイルを使えば良いです。
findコマンドで対象とするファイルを抽出し、 sedコマンドで文字列を一括置換しています。
#! /bin/sh
for f in `find . -name "*.html" -print`
do
cat $f | sed -e "s/rsvon.net/four.sssg.org/g" > $f.new
done
ファイルの一括移動
上記で作成したファイルをもとの.htmlで終了するテキストファイルに移動するには、次のようなシェルスクリプトファイルを使えば良いです。
findコマンドで対象とするファイルを抽出し、それぞれのファイルに対してechoコマンドとsedコマンドを組み合わせて新しいファイル名を取得し、 mvコマンドで移動をしています。
#! /bin/sh
for f in `find . -name "*.new" -print`
do
HTMLF=`echo $f | sed "s/.html.new/.html/g"`
mv $f $HTMLF
done