这里的简单问题。 value1 = value1 + value2
没有结果。但是,find -L . -path "*/lef/*.lef" | grep MACRO
会给出结果,并在其中一个结果返回匹配项上运行find -L . -path "*/lef/*.lef"
。这里出了什么问题?
答案 0 :(得分:2)
find
返回文件名列表。您将此列表管道传输到grep
,因此您实际执行的操作是检查是否
./lef/sc9mcpp84_14lpp_custom_hvt_c16.lef
./lef/sc9mcpp84_14lpp_custom_hvt_c17.lef
./lef/sc9mcpp84_14lpp_custom_hvt_c18.lef
(或任何find
返回)包含字符串MACRO
。它没有,所以你没有得到结果。
grep MACRO ./lef/sc9mcpp84_14lpp_custom_hvt_c16.lef
检查在文件中是否找到了MACRO
。 make grep
查看文件内容而不是文件名,您可以使用xargs
:
find -L . -path "*/lef/*.lef" | xargs grep MACRO
或者您可以告诉find
您想对其结果做些什么:
find -L . -path "*/lef/*.lef" -exec grep MACRO {} \+
如果您想使用xargs
并确保正确处理奇怪的文件名(包含空格),您可以使用-print0
find -L . -path "*/lef/*.lef" -print0 | xargs -0 grep MACRO
用空字符而不是换行符分隔文件名; -0
选项告诉xargs
。{/ p>