- - PR -
ファイル名の一括変更について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-07-17 11:03
こんにちは!いつもありがとうございます。
今、ファイル名を一括変更するためのシェルスクリプトを 作成しているのですが、そのためにボクが使っている方法が ベストなのかどうかを知りたいです。 以下の方法を使っています。 1)/tmp/chfile.listに変更対象のファイル名を入れる aaaa bbbb cccc 2)以下のスクリプト部分で処理を実施する for i in `cat /tmp/chfile.list` do j="X_`echo ${i}`" mv /var/tmp/${i} /var/tmp/${j} done 要は/var/tmp下にある一部のファイルの名前 (aaaa,bbbb,cccc)を変更してX_aaaa,X_bbbb, X_ccccにしたいのですが、これだとchfile.listを 作る手間が入ります。 /var/tmp下のファイルのうち、対象ファイルを選抜して 名前を変える処理をもっと格好よくできたら その方法を知りたいです。よろしくお願いします。 | ||||
|
投稿日時: 2003-07-17 13:01
シェルスクリプトは苦手なんですが
ちょっとアドバイス?と質問を・・・ >j="X_`echo ${i}`" >mv /var/tmp/${i} /var/tmp/${j} この2行って mv /var/tmp/${i} /var/tmp/X_${i} に出来ますよね? それと、対象ファイルの選抜方法ってのがよくわからないんですが・・・ 今回ファイル名の変更を行いたいファイルって ファイル名か何かで決められるんでしょうか? | ||||
|
投稿日時: 2003-07-17 13:34
AIX4.3だと以下のような感じで動きます。
-- rename.ksh の 中身(ココから) -- #!/bin/ksh for i in $* do dname="`dirname ${i}`" bname="`basename ${i}`" mv ${i} ${dname}/X_${bname} done -- rename.ksh の 中身(ココまで) -- こうすれば、 $ rename.ksh /var/tmp/aaaa /var/tmp/bbbb /var/tmp/cccc という実行形式で/var/tmpの下にX_aaaaやX_bbbbができます。 もちろん、リネームしたいファイル名はワイルドカードで 指定してもOKです。 手元にAIXしかないので他の環境で使うんでしたら dirnameやbasenameが使えるか、manで調べてみてくださいね [ メッセージ編集済み 編集者: ino 編集日時 2003-07-17 13:35 ] | ||||
|
投稿日時: 2003-07-17 14:09
これは for i in aaaa bbbb cccc do mv /var/tmp/${i} /var/tmp/X_${i} done とかけますよ。 | ||||
|
投稿日時: 2003-07-30 15:24
for i in `ls /var/tmp/`
do mv /var/tmp/${i} /var/tmp/X_${i} done これは? |
1