如果要查看文件名和行号,POSIXly:
find . -name 'CMake*' -type f -exec grep -nF /dev/null version {} +
Run Code Online (Sandbox Code Playgroud)
(您不想在;这里使用它会grep为每个文件运行一个)。这是 GNUism 的标准等价物:
find . -name 'CMake*' -type f -print0 | xargs -r0 grep -nHF {} +
Run Code Online (Sandbox Code Playgroud)
find(在第一个),xargs(在第二个)将传递尽可能多的参数,grep而不会超过您可以传递给命令的参数数量的限制。在进行拆分时,可能会发生最后一次运行时只传递一个参数的grep情况,在这种情况下grep不会打印文件名。这就是为什么你需要/dev/null那里(或-H使用 GNU grep)。
使用-type f,我们只考虑常规文件(不是设备、符号链接、管道、目录……)。
如果你想使用 GNUisms,你可以使用 GNU 的grep能力来降低目录树:
grep -rHnF --include='CMake*' version .
Run Code Online (Sandbox Code Playgroud)
您不想使用-R因为这会导致grep在下降目录树并从设备、fifos、套接字读取时遵循符号链接...
该版本更安全、更高效,但不便于携带。
| 归档时间: |
|
| 查看次数: |
17897 次 |
| 最近记录: |