有人可以向我解释为什么我没有得到示例 1 中的完整路径吗?
示例 1 - 返回找到的行
grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY
Run Code Online (Sandbox Code Playgroud)
示例 2 - 返回完整路径
grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;
Run Code Online (Sandbox Code Playgroud)
我找到了解决方案,但我想了解这里发生了什么。1 个命令,不同的结果/处理。
Mat*_*Mat 15
在您的第一个示例中,glob 必须已扩展为单个文件。在这种情况下,grep不(默认情况下)不添加文件名。
第二个示例必须扩展为多个文件名,并且grep在这种情况下确实在文件名之前。
您可以使用该-H选项始终将文件名添加到输出中,或者-h从不获取它。
如果您的 grep 缺少这些选项,您可以使用grep REGEX /path/to/pattern/* /dev/null始终获取文件名(从来没有任何命中,/dev/null但它算作文件名),或者cat /path/to/pattern/* | grep REGEX从不获取文件名。