【发布时间】:2017-08-11 17:20:13
【问题描述】:
我有以下文件列表:
INV_1400524_20170412_052945.pdf
INV_1400524_20170412_063522.pdf
INV_1400524_20170412_090338.pdf
INV_1400524_20170412_092911.pdf
INV_1400971_20170502_095250.pdf
INV_1401580_20170703_100410.pdf
INV_1401880_20170804_112917.pdf
RIN_1300355_20170503_014347.pdf
RIN_1300552_20170518_111143.pdf
RIN_1300552_20170518_122055.pdf
RIN_1300688_20170627_040340.pdf
RIN_1300834_20170727_113641.pdf
RIN_1300834_20170727_154404.pdf
格式如下:
<Document Type>_<Document Number>_<Date>_<Time>.pdf
如您所见,由于某种原因,同一个文档编号已被多次输出。我想忽略重复项并将列表过滤为唯一的文档编号和最新日期。如果有帮助,这些文档还有一个修改过的文件时间戳,它与文件名中的日期和时间非常匹配。
使用 perl(我一直在使用 File::Find::Rule)我想将列表缩减为:
INV_1400524_20170412_092911.pdf
INV_1400971_20170502_095250.pdf
INV_1401580_20170703_100410.pdf
INV_1401880_20170804_112917.pdf
RIN_1300355_20170503_014347.pdf
RIN_1300552_20170518_122055.pdf
RIN_1300688_20170627_040340.pdf
RIN_1300834_20170727_154404.pdf
我已经开始了
my @pdf_files = File::Find::Rule->new
->in($root_dir)
->name( '*.pdf' )
->mtime (">$days_ago");
但是看看这个答案: How can I find the newest .pl file in a directory and all its subdirectories using Perl?
我认为可能有一种使用方法:
my $rule = File::Find::Rule->new;
$rule->or( $rule->new->name('INV_*.pdf')->....
$rule->or( $rule->new->name('RIN_*.pdf')->....
my @files = $rule->in($root_dir);
对它们进行分组和过滤。有什么想法吗?
【问题讨论】:
标签: perl duplicates