我的模式类似于“关键字:多节点”。现在,我需要在目录中的所有文件中搜索此模式。如果我们在任何文件中找到了模式,则应返回非空字符串。它可能包含文件名或目录名
在shell脚本中,以下内容将执行相同的操作
KeyMnode = grep -w "keyword : Multinode" ${dirname}/*
我想过使用find(子例程,directory_path)并在子例程中我想遍历整个目录中的所有条目。对于每个条目,我想检查它是否是可读文件。如果文件是可读的,我想在找到的文件中搜索所需的模式“keyword:Multinode”。如果我们成功命中,整个find命令应该导致非空字符串(最好只有现有目录Name),否则会产生空字符串。如果您需要任何进一步的信息,请与我们联系。
我希望使用perl完成此操作。请帮我解决。
答案 0 :(得分:0)
以下是一些Perl工具,可用于执行您所描述的内容:
\&wanted
回调)以确定它是否符合您的条件-r
运算符会告诉您文件是否可读(if (-r $file_name)...
)<$fh>
会读取其内容,以便您可以使用正则表达式检查它们是否与您的目标模式匹配\b
添加到模式的开头和结尾会使其仅在字边界处匹配,类似于grep
的{{1}}开关如果您有更具体的问题,请发布其他问题以及展示这些问题的代码,包括您预期会发生什么以及实际结果与您的期望有何不同的陈述,我们很乐意帮助解决这些问题
编辑:评论代码的清理和可运行版本:
-w