【发布时间】:2017-11-04 22:42:12
【问题描述】:
这个 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"
}'
有人对此有其他解决方案吗?
【问题讨论】:
-
你的代码有什么问题?
-
任何其他有效的解决方案都会有帮助@melpomene
-
Perl 有一个
Find模块,因此您可以轻松消除对命令行find的单独进程的依赖。这是否更“有效”,我不能说。这是一个操作系统/文件系统绑定的任务。速度将取决于与您的程序无关的细节。 -
我强烈建议不要在您的帖子中“请求”内容,特别是不要在标题中。您正在发布一个问题,就是这样。 (如果您不喜欢我的更改,请转到“编辑”链接并编辑或回滚到以前的版本。)。另外,我建议您说明您发布的代码有什么问题,而不是最后一行。
-
你有什么问题?