如何grep特定名称模式的文件?

时间:2019-06-25 10:50:57

标签: perl grep glob

我在Perl中有一段代码可以grep提取目录下具有特定名称的文件。

push @{ $output{archives} }, grep {-f $_} "$output{dir}/result0.txt”, "$output{dir}/outcome.txt”;
say "@{ $output{archives} } \n";

这将在目录result0.txt下搜索名称为outcome.txt$output{dir}的文件。这些结果将被推入数组$output{archives}

如何搜索模式outcome_0.txtoutcome_1.txtoutcome_2.txt等的文件名并推送到数组。

我尝试将"$output{dir}/outcome.txt”更改为"$output{dir}/outcome*.txt”,但完全没有任何结果。

1 个答案:

答案 0 :(得分:2)

如果要查找与outcome_*.txt匹配的文件,则可以使用glob函数或aka <>

push @{ $output{archives} }, grep {-f $_} <"$output{dir}/outcome_*.txt">;

或使用glob代替<>

push @{ $output{archives} }, grep {-f $_} glob "$output{dir}/outcome_*.txt";

或使用更具体的正则表达式:

push @{ $output{archives} }, grep {(-f $_) && /outcome_\d+\.txt$/}  glob "$output{dir}/*";

来自perldoc glob

  

全局
  在列表上下文中,返回文件名列表(可能为空)   扩展EXPR的价值,例如标准Unix shell   / bin / csh可以。在标量上下文中,全局遍历   文件名扩展,列表用完后返回undef。

有关更多信息,请参见perldoc globperldoc perlop