繁体   English   中英

Perl递归文件搜索Unicode文件名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM