我正在尋找一種方法來統計和編號/重命名目錄中的文件與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文件一個例外的工作方案,雖然$ count設置爲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來重命名文件。哦,並增加一些計數變量來計數它們。 – NorthGuard
如果找到的文件在開始時缺少2位數 - 從1到9/01,02,03,... 10,11 etc /中的前導0進行計數和重命名。 – thebourneid
@thebourneid你能否更新你的問題,這不是很清楚你想要什麼?看起來你有兩種情況,一種是在開始時沒有數字,另一種是在開始時只有一個數字的情況。添加一些您會看到的示例文件,以及您希望將它們更改爲什麼樣的文件會更好。例如'1filename.txt => 01filename.txt'和'11filename.txt => 11filename.txt' – NorthGuard