Kodama's home / tips.

ファイル名を 10 毎の連番につけなおす

a15.txt, a20.txt のように番号づけしたファイルたちの番号を 10毎の連番につけなおす.

規則的に番号づけするつもりが, いつのまにか不揃いになってしまったりとかすると面倒なので...

使用例

$ ls
a001.txt  a015.txt  a025.txt  a030.txt
$ rename10.sh a*
$ ls
a010.txt  a020.txt  a030.txt  a040.txt

スクリプト

#!/bin/sh
#  a0010.txt , a0020.txt のようなファイルを 10 毎の連番につけなおす.
# rename01.sh  : K.Kodama 2004-05
w=.$0.$$
mkdir $w
n=0
for f in `ls $@` ; do
	if `echo $f | grep -q '[0-9]'` && [ -f $f ] ; then
		n=`expr $n '+' 1`
		n0=`echo 00${n}0 | sed -n 's/.*\(....$\)/\1/p'`
		f1=`echo $f.$n0 | sed -n 's/^\([^0-9]*\)\([0-9]*\)\(.*\)\.\([0-9]*\)$/\1\4\3/p'`
		mv $f $w/$f1
	fi
done
cp $w/* . && rm $w/* && rmdir $w

Kodama's home / tips.