- PR -

ファイル名の一括変更について

1
投稿者投稿内容
トーヤ
ベテラン
会議室デビュー日: 2003/06/12
投稿数: 63
投稿日時: 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下のファイルのうち、対象ファイルを選抜して
名前を変える処理をもっと格好よくできたら
その方法を知りたいです。よろしくお願いします。
take
ぬし
会議室デビュー日: 2002/06/06
投稿数: 265
投稿日時: 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}
に出来ますよね?

それと、対象ファイルの選抜方法ってのがよくわからないんですが・・・
今回ファイル名の変更を行いたいファイルって
ファイル名か何かで決められるんでしょうか?
ino
常連さん
会議室デビュー日: 2003/04/17
投稿数: 25
お住まい・勤務地: 大阪
投稿日時: 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 ]
tk
会議室デビュー日: 2003/01/30
投稿数: 5
投稿日時: 2003-07-17 14:09
引用:

2)以下のスクリプト部分で処理を実施する
for i in `cat /tmp/chfile.list`
do
j="X_`echo ${i}`"
mv /var/tmp/${i} /var/tmp/${j}
done


これは

for i in aaaa bbbb cccc
do
mv /var/tmp/${i} /var/tmp/X_${i}
done

とかけますよ。
francis
会議室デビュー日: 2003/07/30
投稿数: 17
投稿日時: 2003-07-30 15:24
for i in `ls /var/tmp/`
do
mv /var/tmp/${i} /var/tmp/X_${i}
done

これは?
1

スキルアップ/キャリアアップ(JOB@IT)