名前を変更する際に使用するファイル名をどのように保存するかについては言及していないので、一般的な変更の種類と見なします。 "file_x" - > "file_x_foo"それを自分で定義する必要があります。
このスクリプトは、ディレクトリ内のすべてのファイルの名前を変更しようとします。ディレクトリ内の通常のファイルのみが対象ファイルであるとします。ディレクトリにファイルがさらにある場合は、そのファイルを識別する手段を提供する必要があります。
スクリプトは、ルートディレクトリであるオプションの引数をとります。
これはテストされていないサンプルコードですが、動作するはずです。
use strict;
use warnings;
use autodie;
use File::Copy;
my $rootdir = shift || "/rootdir";
opendir my $dh, $rootdir;
chdir $rootdir;
my @dirlist = grep -d, readdir $dh;
for my $dir (@dirlist) {
next if $dir =~ /^\.\.?$/;
chdir $dir;
for my $org (grep -f, glob "*.txt") { # identify target file
my $new = $org;
$new .= "_foo"; # change file name, edit here!
move $org, $new;
}
chdir "..";
move $dir, $new;
}
出典
2011-12-26 09:21:22
TLP
tel私の操作ではループですべてのテキストファイルに同じ名前が付けられますか?あなたの新しい名前は何ですか? – run