[英]Perl recursive file search for unicode filenames
我已经尝试过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);
我没有办法对此进行测试(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
和朋友,因此它可能很慢,但是只要可以看到您的文件,这应该可以工作。 试试看,让我知道是否有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.