名前を変更したい 96 個のファイルを含むフォルダーがあります。問題は、各ファイル名に一意の変更が必要なことです...各名前の前にゼロを追加したり、拡張子を変更したりするのとは異なります。検索と置換を行うのは現実的ではありません。変更したい名前の例を次に示します。
newSEACODI-sww2320H-sww24_07A_CP.9_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07B_CP.10_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07C_CP.11_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07D_CP.12_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07E_R.1_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07F_R.3_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07G_R.4_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07H_R.5_sww2320H_sww2403F.fsa
perl を使用して、上記の名前をそれぞれ以下の名前に変更したいと思います。
SEACODI_07A_A.2_sww2320H_2403F.fsa
SEACODI_07B_A.4_sww2320H_2403F.fsa
SEACODI_07C_H.1_sww2320H_2403F.fsa
SEACODI_07D_H.3_sww2320H_2403F.fsa
SEACODI_07E_H.6_sww2320H_2403F.fsa
SEACODI_07F_H.7_sww2320H_2403F.fsa
SEACODI_07G_Rb.4_sww2320H_2403F.fsa
SEACODI_07H_Rb.9_sww2320H_2403F.fsa
そのようなことはできますか?新しい名前のリストを含むテキスト ファイルを作成し、そのリストを @newnames と呼ぶという漠然とした考えがあります。現在のファイル名から別の配列を作成し、@oldnames と呼びます。次に、@oldnames のfor
各要素 $i が @newnames の対応する $i に置き換えられるループを実行します。
ただし、現在のファイル名から配列を作成する方法がわからないため、この漠然としたアイデアが正しい方向に進んでいるかどうかはわかりません。「oldnames」という名前のディレクトリに、めちゃくちゃな名前のファイルを保管しています。以下は、そのディレクトリ内のファイル名から配列を作成しようとする私の試みです:
#!/usr/bin/perl -w
use strict; use warnings;
my $dir = 'oldnames';
opendir ('oldnames', $dir) or die "cannot open dir $dir: $!";
my @file = readdir 'oldnames';
closedir 'oldnames';
print "@file\n";
上記は何もしていないようでした。道に迷いました。ヘルプ?