1〜9の数字の先頭にゼロが付いたディレクトリ内のファイルを数えたり番号を付けたり名前を変更したりする方法を探しています。それはFile :: findに基づいていなければなりませんが、最も効率的な方法ではないかもしれませんが、後でその関数に基づいたより大きなコードに統合しなければなりません。 'File1'、 'File2'、 'File3' .... 'File10'、 'File11'などは'01になります。 File1 '、'02。 File2 '、... '10。 File10 '、'11。 FILE11' などディレクトリ内のPerl数と数値ファイル
use strict;
use warnings;
use File::Find;
find(\&rename_files, $dir_source);
sub rename_files {
/\.flac$/ or return;
my $fd = $File::Find::dir;
my $fn = $File::Find::name;
my $file = $_;
rename $file, $_;
}
UPDATE:これは、コードは0からファイルのカウントを開始することを、1つの例外を除いて実用的なソリューションである$回数が1
use strict;
use warnings;
use File::Find;
my $dir_source = '';
find(\&rename_files, $dir_source);
{
my $count = 1;
sub rename_files {
return if not -f $_ or not /\.flac$/;
my $file = sprintf "%02d\. $_", $count++;
print "$file\n";
rename $_, $file;
}
}
あなたがしなければならないすべては '一致しようとして指名手配サブルーチンを見つける呼んでいるようです$ _ =〜/^\ d \ D/'もしそうなら、名前にファイル名の末尾に0をつけてください。ああ、それらを数えるためにいくつかのカウントvarを増やしてください。 – NorthGuard
見つかったファイルの先頭に2桁の数字がない場合は、1〜9/01,02,03、... 10,11などの先頭に0を付けて名前を変更して名前を変更します。 – thebourneid
@thebourneid質問を更新することはできますか? 2つのケースがあるようです。最初は桁がなく、最初に1桁しかないケースです。いくつかのサンプルファイルを追加して、それらを変更してほしいと思っているものを追加してください。例えば'1filename.txt => 01filename.txt'と' 11filename.txt => 11filename.txt' – NorthGuard