此Perl脚本具有搜索功能,可搜索具有相同文件名的子目录中的文件。
生成的输出必须是这样的:
file_name1: ~/X/file_name1 ~/?/??/file_name1
file_name2: ~/X/XYZ/file_name2 ~/?/?????/ ??/file_name2
我尝试过使用以下方式:
find . -type f | perl -e'
while ( <> ) {
chomp;
push @{ $h{ substr($_, rindex($_, "/") + 1) } }, $_;
}
for $k (keys %h) {
next if @{ $h{$k} } < 2;
print "$k: @{ $h{$k} }\n"
}'
有没有人有另一个解决方案?
答案 0 :(得分:1)
看来你正在寻找重复的文件,简单地说。
几种方法
有一个模块File::Find::Duplicates,可以直接解决您的问题。
使用模块查找所有文件,例如File::Find::Rule。然后使用多种方法之一在列表中查找重复项,或使用哈希(请参阅this post)。使用MD5确认文件是否相同。
上面提到的详情上有关于SO的帖子,事实上在整个主题上,请搜索。