我的UNIX非常生疏,但我想要的是在UNIX中搜索包含“生成”和“处理”文本中两个单独单词的文件,但同一行中的两个单词?
我知道有脚本文件包含脚本作者的详细信息及其在脚本顶部标注的功能。例如,一个这样的脚本的开头包含以下内容;
功能:生成销售加班流程
我尝试了以下内容(我的UNIX再次生锈)
grep -rwl . -e "generate" | "process"
但这会产生错误,例如无法识别的命令
我想要的是一个Progress文件列表,如;
salesovertime1.p
salestravel1.p
salesexpenses1.p
salesexpenses2.p
答案 0 :(得分:0)
如果您搜索文件,那么grep
是合适的,然后您可以使用find . -exec grep -H generate {} \; 2> /dev/null | grep process
进行过滤:
-H
将递归地查找当前目录中的每个文件,然后过滤包含单词“generate”的文件,再过滤包含单词“process”的过滤器。文件名将在输出时使用选项/dev/null
(GNU grep)生成,错误消息开始重定向到find . -exec grep -H generate {} \; 2> /dev/null | grep process | cut -f1 -d\:
。
现在,如果您只想要文件名,可以使用:
grep process `find . -exec grep -H generate {} \; 2> /dev/null | cut -f1 -d\:` 2> /dev/null | cut -f1 -d\:
如果你想在同一个文件中“生成”和“处理”但在不同的行上,以下将会这样做:
find
grep
生成一个用于span
的文件列表,并提取重定向错误的文件名。