ファイル名の変換

ファイル名称を全部小文字に変更

ファイル名称を全部小文字に変更するには、次のようにします。

#!/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