我想在指定目录中包含文本 " some_attr" 的所有 .dat 文件上运行perl脚本及其子目录。我怎样才能做到这一点? 我可以使用&#列出所有包含 " some_attr" 的 .dat文件39; *** grep -nri some_attr * ./ 39; * 并在greped文件上手动运行perl脚本,但我想使用perl
自动执行此操作答案 0 :(得分:1)
假设你有一个Bash shell,你可以使用一个简单的for循环和grep:
for file in `grep -lr some_attr | uniq`
do
perl script_name.pl $file
done
答案 1 :(得分:1)
您可以使用File::Find
或File::Find::Rule
:
use strict;
use warnings;
use autodie;
use File::Find::Rule;
# find all the .dat files in .
my @files = File::Find::Rule->file()
->name( '*.dat' )
->in( '.' );
for my ($file) {
my $data = do {
open my $fh, '<', $file;
local $/;
<$fh>;
};
next if $data !~ /some_attr/;
print $file, "\n";
}