Home > Shell Script > ファイル名の変換

ファイル名の変換

  • Posted by: hiro345
  • 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

Home > Shell Script > ファイル名の変換

検索
カレンダー
« 9月 2010 »
S M T W T F S
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
広告


最近のコメント
アーカイブ

Return to page top