$ 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
#!/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'
皆さんどうもありがとうございま下。私は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で確かめれる。