我尝试了File::Find::Rule
,但它没有显示包含如下字符的文件名:
בר רפאלי
有什么想法吗?
use File::Find::Rule;
use Win32::Shortcut;
use Spreadsheet::WriteExcel;
my $workbook = Spreadsheet::WriteExcel->new('status.xls');
my $worksheet = $workbook->add_worksheet();
my $base_dir ='E:/files/';
my $find_rule = File::Find::Rule->new;
#$find_rule->maxdepth(1);
$find_rule->name('*.lnk');
my @files = $find_rule->in($base_dir);
print scalar(@files)."\n";
#print join("\n", @files);
答案 0 :(得分:0)
我没有办法测试这个(Linux,没有太多的Unicode知识等),它可能效率低下,但也许它可以用“只是完成它。你可以使用我的File::chdir::WalkDir
并使用每个文件回调将文件名添加到列表中:
#!/usr/bin/env perl
use strict;
use warnings;
use File::chdir::WalkDir;
use File::Spec::Functions 'catfile';
my $base_dir = '.';
my @files;
my $callback = sub {
my ($file, $dir) = @_;
return unless ($file =~ /\.lnk$/);
push @files, catfile($dir, $file);
};
walkdir($base_dir, $callback);
由于这会依赖于opendir
和朋友,因此它可能会很慢,但只要它可以看到您的文件,这应该可行。尝试一下,如果有问题请告诉我。
答案 1 :(得分:0)