よろしくおねがいします。
fileフォルダに
1.txt
2.txt
3.txt
というファイルがあり、ここから1.txtを別フォルダに移動します。
(ここまでは問題ありません)
その後fileフォルダには
2.txt
3.txt
というファイルが残るのですが、このファイル名を自動的に
1.txt
2.txt
と連番でリネームしたく
#!/bin/sh
declare -i i=1
for file in *.txt
do
mv $file $i.txt
i=i+1
done
をhoge.shとして準備しました。
Mac OS X(Darwin)では思い通りに実行されるのですが、Webサーバ(FreeBSD 6.1-RELEASE-p21)にアップし
%sh hoge.sh
とすると
declare: not found
となり、ファイルの方も
.txt
i+1.txt
の2ファイルになってしまいます。
あまり知識も無く勉強しながらなのですが、きちんと連番で書き換えられるようにするにはどうすればよろしいでしょうか?
根本的に間違ってる事などあるかと思いますがよろしくおねがいします。
それは/bin/shの機能を超えた Darwinのシェルの拡張機能を使っているからでしょう。
また、ファイルが10個以上あると
for file in *.txt
では
1.txt 10.txt 11.txt 2.txt 3.txt・・・
という順序で処理されてしまいます。
とりあえず
man sh
を全部読破すれば理解できると思いますよ。