Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用grep和perl查找文件_Regex_Perl_Grep - Fatal编程技术网

Regex 使用grep和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 从我找到的某个网站,但它似乎不起作用?请帮忙,谢谢 怎么样

我是perl新手,目前正陷于这个问题

  • 我在一个目录中有多个文件
  • 我想检查他们的名字,看看文件名是否匹配某个关键字(不是整个文件名)。 总之,我想获取所有具有特定关键字的特定文件,然后处理它们
  • 我在尝试类似的东西

    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…”为什么?