Perl 查找目录树中每个文件名的所有实例
这个Perl脚本有一个搜索函数,可以在具有相同文件名的子目录中搜索文件 生成的输出必须如下所示:Perl 查找目录树中每个文件名的所有实例,perl,unix,find,Perl,Unix,Find,这个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($_,
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"
}'
find-类型f | perl-e'
而{
咀嚼;
push@{$h{substr($\uux,rindex($\ux,“/”)+1)},$\ux;
}
对于$k(键%h){
下一个if@{$h{$k}}<2;
打印“$k:@{$h{$k}}\n”
}'
有人有其他解决方案吗?简单地说,您似乎在寻找重复的文件 两种方法
- 有一个模块,可以直接解决您的问题
- 例如,使用模块查找所有文件。然后使用多种方法之一在列表中查找重复项,或使用哈希(请参阅)。使用MD5确认文件是否相同
上面提到的详细信息有很多帖子,事实上,关于整个主题,请进行搜索。您的代码有什么问题吗?其他有效的解决方案将是helpful@melpomenePerl有一个
Find
模块,因此您可以轻松消除对命令行Find
单独进程的依赖。我不能说这是否更“有效”。这是一个OS/文件系统绑定的任务。速度将取决于与你的程序无关的细节。我强烈建议不要在你的帖子中“要求”东西,特别是不要在标题中。您正在发布一个问题,仅此而已。(如果您不喜欢我的更改,请转到“编辑”链接并编辑或回滚到以前的版本。)。另外,我建议你说明你发布的代码有什么问题,而不是你的最后一行。你有什么问题?