linux - Perl,如何使用管道将多个文件分类到同一个文件处理程序中?

标签 linux perl filehandler

我一直在尝试将多个文件分配给一个文件句柄。然后从那里处理整个文件句柄以查找特定模式,然后将其写入 FIN_RESULTS。

Linux
exp文件
我的/dir1/结果
我的/dir2/结果
等等

这是我笨拙的尝试

   open (FIN_RESULTS, ">", "FIN_RESULTS.txt") or die $!;

   open(RESULTS, "-|"," find my/ -name RESULTS -print0 | xargs -0 cat");
   while(<RESULTS>){
        if(/match_something/){
           do some commands;
           print FIN_RESULTS $_;
         }
close FIN_RESULTS;
close RESULTS;

但我最终只是用当前目录的 ls 覆盖了 perl 脚本本身。

感谢帮助!!!!我能够实现我最初的想法。

我有第二个问题,是否可以通过只查找特定目录的方式来实现查找? 就好像我有
我的/abc_dir1/结果
我的/dsa_dir2/结果
我的/afx_dir3/结果

但我只想搜索 dir2 和 dir3。

@array1 = qw( dir2 dir3);

foreach $array1(@array1)
{ open(RESULTS, "-|"," find my/*$array1 -name RESULTS -print0 | xargs -0 cat");
}

但我得到这个错误,xargs: cat: terminated by signal 13。 所以不允许多次重新打开一个文件句柄。关于我可以做什么有什么建议吗?

最佳答案

假设您真的想进行外部查找:

open RESULTS, "-|", "find my -name RESULTS -print0 | xargs -0 cat"

应该做你想做的。

关于linux - Perl,如何使用管道将多个文件分类到同一个文件处理程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11962353/

相关文章:

java - ProcessBuilder 和 FileHandler 之间的区别

.net - 是否可以使用 Azure Web 应用程序服务来托管 .NET Core Web 应用程序以及 Wordpress 平台?

linux - Bash:当不存在时出现意外的 "("

Perl - 无法访问 Excel 文件

perl - 即使在使用 Memoization 之后,Fibonacci Perl 程序也会耗尽内存,即使是小输入,

c# - 在 ashx 页面中分配隐藏字段值?

使用查找命令的正则表达式

linux - 自动从一个 linux 系统连接到另一个

perl - 我正确使用 utf8::is_utf8 吗?

javascript - 将大小和名称传递给 JavaScript 的 FileHandler 的 .onload 事件