大森保英です。
おかげさまで、
1. html ファイルに対しては置換処理を行う
2. *~, #*# にマッチするファイルはコピーしない
3. その他のファイルは、再帰的にコピーする
という仕様のシェルスクリプトを完成できました。
->8- ->8- ->8- ->8- ->8- ->8- ->8- ->8- ->8- ->8-
#! /bin/sh
OLD_PAGES_PATH="$HOME/geocities"
NEW_PAGES_PATH="$HOME/new_geocities"
if [ ! -d $NEW_PAGES_PATH ] ; then
echo "Creating $NEW_PAGES_PATH..."
else
printf "$NEW_PAGES_PATH exists. Do anyway? (yes or no) "
read a
if [ "$a" = "yes" ] ; then
echo "Clearing $NEW_PAGES_PATH..."
rm -rf $NEW_PAGES_PATH
else
exit
fi
fi
mkdir -p $NEW_PAGES_PATH
cd $OLD_PAGES_PATH
for i in `find *`; do
if [ -d $i ] ; then
echo "Creating $NEW_PAGES_PATH/$i..."
mkdir -p $NEW_PAGES_PATH/$i
else
case "$i" in
*.html )
echo "Converting $OLD_PAGES_PATH/$i to $NEW_PAGES_PATH/$i..."
sed -e 's/Program\/1018/Screen\/2348/' -e 's/<BODY.*>/<BODY TEXT="#4876FF" BGCOLOR="#E0FFFF" LINK="#0000FF" VLINK="#912CEE">/' $i > $NEW_PAGES_PATH/$i
;;
*~ )
continue
;;
\#*\# )
continue
;;
* )
echo "Copying $OLD_PAGES_PATH/$i to $NEW_PAGES_PATH/$i..."
cp -p $i $NEW_PAGES_PATH/$i
esac
fi
done
->8- ->8- ->8- ->8- ->8- ->8- ->8- ->8- ->8- ->8-
という内容です。
私の所では、bash-1.14.7(Vine Linux 1.1) を使っていて、
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 May 1 04:43 /bin/sh -> bash
となっています。
On 2 Jul 1999 01:44:20 GMT,
in article <7lh5hk$obi$1 _at_ narans.cc.nara-wu.ac.jp>,
nide _at_ ics.nara-wu.ac.jp <nide _at_ ics.nara-wu.ac.jp> wrote:
>> シェルスクリプトで \.html? を条件に分岐させる方法がわからず
>> 詰まっています。
>
> たしかに、ifでは分岐しにくいですね(exprを使えばできなくもないけど)。
>
> case "$i" in
> *.html)
> …
> ;;
> esac
>
>とかどうでしょう。あるいは、最初にディレクトリを全て掘っておいて、次は
>find . -name \*.html でいくとか。
find の出力で、最初にディレクトリが出力され、
次にその中にあるファイル名が出力されるのを利用することで、
find を一回使うだけで処理できました。
この点で、find の実装に依存してしまうのかも知れません。
私の所では GNU Find Utilities ver 4.1(Vine Linux 1.1) を使っています。
Message-ID: <7lh945$i2g$1 _at_ cavalier.randd.itc.co.jp> の記事で、
Ken Nakagaki さんが使っていた、 tar -cf - と、tar -xf - を
パイプで組み合わせる手を使ったり、cp -r を使ったりして、
あらかじめファイルを一式コピーしてから置換処理を行っても
良かったかもしれません。
tar によるコピーと cp -r の違いが分かっていないので
なんとも言えないのですが…。
この場合だと、コピーしてから *~ や #*# などのバックアップファイルを
消すことになるのかな…?
--
大森保英(Yasuhide OOMORI)
mailto:dasen _at_ typhoon.co.jp
References:
- [fol] Re: recursive sedYasuhide OOMORI
- [fol] Re: recursive sednide
- Prev by Date: [fol] 私的ディストリビューション感(RE:インストール完了!)
- Next by Date: [fol] Re: [Q]chkconfig
- Previous by thread: [fol] Re: recursive sed
- Next by thread: [fol] Re: recursive sed
- Indexes:[Main][Thread]