Regex 使用grep和perl查找文件
我是perl新手,目前正陷于这个问题Regex 使用grep和perl查找文件,regex,perl,grep,Regex,Perl,Grep,我是perl新手,目前正陷于这个问题 我在一个目录中有多个文件 我想检查他们的名字,看看文件名是否匹配某个关键字(不是整个文件名)。 总之,我想获取所有具有特定关键字的特定文件,然后处理它们 我在尝试类似的东西 grep -rl "keyword" /.; #where does the filenames get stored? let's say in $_? #foreach valid file, do something 从我找到的某个网站,但它似乎不起作用?请帮忙,谢谢 怎么样
grep -rl "keyword" /.;
#where does the filenames get stored? let's say in $_?
#foreach valid file, do something
从我找到的某个网站,但它似乎不起作用?请帮忙,谢谢 怎么样
ls *keyword*
如果您试图在perl中执行此操作
@files = glob("*keyword*");
for $file (@files)
{
print "$file\n";
}
请注意,perl中的grep
是一个核心函数,但它与正则表达式无关。它更像SQL,其中
;它通过对每个元素应用函数(可能是正则表达式,也可能不是正则表达式)将数组过滤到子数组
如果全局表达式不够好,您可以这样做
@files = grep /(fun[kK]y_)keyword?/ glob("*");
怎么样
ls *keyword*
如果您试图在perl中执行此操作
@files = glob("*keyword*");
for $file (@files)
{
print "$file\n";
}
请注意,perl中的grep
是一个核心函数,但它与正则表达式无关。它更像SQL,其中
;它通过对每个元素应用函数(可能是正则表达式,也可能不是正则表达式)将数组过滤到子数组
如果全局表达式不够好,您可以这样做
@files = grep /(fun[kK]y_)keyword?/ glob("*");
perl-E'say for'
perl-E'say for'
Grep是一个bash命令。您真的想使用Perl吗?如果只想在文件名中搜索关键字,可以使用find*关键字*
如果是bash问题,可以find-type f-name'keyword**”| xargs进一步处理
bash命令是什么?另外,我将它用作解析脚本/程序,我只需要它来找到我想要继续解析的文件。@bashophil也是一个核心Perlfunction@chrsblck,嗜巴什米尔人有点说错话。他的意思是“您发布的是一个bash命令”,这就是为什么它在Perl中不起作用。您真的想使用Perl吗?如果只想在文件名中搜索关键字,可以使用find*关键字*
如果是bash问题,可以find-type f-name'keyword**”| xargs进一步处理
bash命令是什么?另外,我将它用作解析脚本/程序,我只需要它来找到我想要继续解析的文件。@bashophil也是一个核心Perlfunction@chrsblck,嗜巴什米尔人有点说错话。他的意思是“你发布的是一个bash命令”,这就是为什么它在Perl中不起作用!是的,我是perl新手,所以我不知道grep和glob之间的区别(老实说,我还没有学过),而且,如果我知道在某些文件夹中只有一个文件带有关键字,我可以只做$file=glob(“关键字”);打印$file?不起作用的glob(“关键字”)和glob(“关键字”)之间有什么区别??谢谢@ps_chou使用反勾号在注释中输入代码,就像这样
如果你想匹配关键字1
和我的关键字
这样的文件,你需要在关键字周围使用*
。否则,它将只匹配正好是关键字的文件。我认为你的评论有误,因为堆栈溢出有特殊的格式字符;打印$file代码>我想知道这是否可行?因为我使用了这个,它只打印一次文件名,紧接着是“使用未初始化值$file…”为什么?啊,谢谢!是的,我是perl新手,所以我不知道grep和glob之间的区别(老实说,我还没有学过),而且,如果我知道在某些文件夹中只有一个文件带有关键字,我可以只做$file=glob(“关键字”);打印$file?不起作用的glob(“关键字”)和glob(“关键字”)之间有什么区别??谢谢@ps_chou使用反勾号在注释中输入代码,就像这样
如果你想匹配关键字1
和我的关键字
这样的文件,你需要在关键字周围使用*
。否则,它将只匹配正好是关键字的文件。我认为你的评论有误,因为堆栈溢出有特殊的格式字符;打印$file代码>我想知道这是否可行?因为我使用了这个,它只打印一次文件名,紧接着是“使用未初始化值$file…”为什么?