シェルスクリプト総合 その1

このエントリーをはてなブックマークに追加
$ mv *.txt *.doc

なスクリプト無いですか?どうも上手い方法が無くて困ってます。汎用性のある
シェルスクリプト誰か書いてませんか?

for f in *.txt; do
mv $f `basename $f .txt`.doc
done

そんなのでいちいちスクリプト書かない。
$ mv *.txt *.doc
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
75./chsuff.sh txt doc:04/12/24 14:32:18
#!/bin/sh

for file in *.$1
do
 mv $file ${file%.$1}.$2
done
>>72

$ cat rename.sh
#!/bin/sh
ls *.$1 | sed "s/\(..*\)\.$1/mv & \1.$2/" | sh

リネームしたいファイルがあるディレクトリに cd して
$ rename.sh txt doc
>>72
autoload zmv
zmv '(*).c' '$1.h'
alias mv='noglob zmv -W'
7872:04/12/24 18:16:57
皆さんどうもありがとうございま下。私はlinux||cygwinでbashなのでzshとか
ワカラ無いのですが参考になりました。
一応、こunixuserの新山センセのsedっぽいパターンマッチを使うコマンド
formv.shを使って解決していたのですが、もっとスマートな方法無いかと。

formv.sh
------
#!/usr/bin/bash
if [ $# -lt 2 ]; then
 echo 'usage: formv "s/pattern/pattern/" filename(regexp)'
 exit 1
fi
s=$1;shift
for i in $*; do
 j=`echo "$i" | sed "$s"`
 echo $i "->" $j
 mv $i $j
done
-------
$ formv 's/txt/doc' *.txt
$ formv 's/merry_crithmas/aho!/' *.txt;
変更してないならbashだろう。echo $SHELLで確かめれる。