-PR-
締切済み

配列を使ってファイル名のリネーム

  • 困ってます
  • 質問No.75815
  • 閲覧数143
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 41% (7/17)

Perl超初心者ですが、
あるディレクトリ内の500ファイルを配列処理で
リネームできないか検討しています;

@oldname=(4001,4005,4125・・・4050)

@newname=(8038,8952,8273,・・・7000)
にリネーム。

難しそうなので、フリーソフトも探したのですが、
見つからず、困ってます。
よろしくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル9

ベストアンサー率 47% (27/57)

少し確認なのですが、このファイル名の変更は今回のみですか?それとも何度もやるようなものですか? (流動的か固定的か) もしも何度もやるようであれば、perlなりshなりで、きちんとスクリプトを組むのが良いとは思うんですけれども、 もしも、もう現状あるファイルを単に変えたいというのであれば、 まぁ同じですがshとかでバッチファイルみたいなものを固定で作成して、 コマンド行をずらずら並べて実行み ...続きを読む
少し確認なのですが、このファイル名の変更は今回のみですか?それとも何度もやるようなものですか?
(流動的か固定的か)

もしも何度もやるようであれば、perlなりshなりで、きちんとスクリプトを組むのが良いとは思うんですけれども、
もしも、もう現状あるファイルを単に変えたいというのであれば、
まぁ同じですがshとかでバッチファイルみたいなものを固定で作成して、
コマンド行をずらずら並べて実行みたいにした方が早いと思うんですけども。

いかがでしょうか??
補足コメント
ikurakun

お礼率 41% (7/17)

_mer_さん、早速のレスありがとうございます。

>少し確認なのですが、このファイル名の変更は今回のみで>すか?それとも何度もやるようなものですか?
>流動的か固定的か)
正直に言うと、年4回程度です。
どちらかというと、固定的なのでしょうか?
投稿日時 - 2001-05-14 17:15:27
関連するQ&A


  • 回答No.2
レベル10

ベストアンサー率 64% (73/113)

仮にそのような配列が与えられているとしたら、 for (my $i = 0; $i < @oldname; $i++) { rename($oldname[$i], $newname[$i]); } でいいと思います。基本はこれですが、例えば途中で すでに使われている名前を作ろうとしたときはエラーにするとか、 いくつかリネームした途中で失敗したらどうする、とか、そういった ...続きを読む
仮にそのような配列が与えられているとしたら、

for (my $i = 0; $i < @oldname; $i++) {
rename($oldname[$i], $newname[$i]);
}

でいいと思います。基本はこれですが、例えば途中で
すでに使われている名前を作ろうとしたときはエラーにするとか、
いくつかリネームした途中で失敗したらどうする、とか、そういった
ことを考えておいたほうがいいかもしれませんね。

あとは@oldname, @newnameの作り方でしょうか。なにかファイルに
4001,8038
4005,8952
.......
とペアを書いておいて、例えばrename_dat.200105とかいう名前で
保存しておき、
% perl myrename.pl rename_dat.200105
の形式で実行できるようにしておくとか。こうすればrename_dat.*を
年4回書きなおして実行すればよくなります。
なるべく、ちょっとの変更で仕事が済むようにするのがコツですよ。
また、「あのファイルを変更すればいい」と後から思い出しやすく
しておくのもコツ。私など1ヶ月以上前のことはすぐ忘れますから。
  • 回答No.3
レベル9

ベストアンサー率 47% (27/57)

良い回答が出ているようですので、書いても、と思ったんですが、一応考え方、という事で書いておきます。 固定的なのと流動的(汎用的)なのについてなんですが、 例えば「あるディレクトリ内にあるファイルを全て、ある規則に従って名前を変更する」と言うのが、 頻繁に発生する場合は、流動的(汎用的)なプログラムを書く必要があるかなと思ったのです。 そういうファイル名をプログラム内部(外部にせよ)に持つよりか ...続きを読む
良い回答が出ているようですので、書いても、と思ったんですが、一応考え方、という事で書いておきます。

固定的なのと流動的(汎用的)なのについてなんですが、
例えば「あるディレクトリ内にあるファイルを全て、ある規則に従って名前を変更する」と言うのが、
頻繁に発生する場合は、流動的(汎用的)なプログラムを書く必要があるかなと思ったのです。
そういうファイル名をプログラム内部(外部にせよ)に持つよりかは、
ls(リストコマンド)の何かしらのオプションでファイル名だけを取り込むようにして、
それを規則にそって変更する方が何にでも使えるからです。
(あとで色々応用が出来ます)

ただある程度、そのように規則的に決まっているもの、とか、ほとんど使わない、という場合は、
データを先に作ってそれに従って、と言う固定的なプログラムの方が、
作るにも修正にも楽で良いかなと思って、どちらの場合なのかなと思ったのでした。

ともあれHead_Syndicateさんの方法+若干のエラー処理を加えるだけで問題ないと思います。
上手くいくと良いですね。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ