45 使用时find,如何在搜索字符串时返回文件名和行号?我设法在一个命令中返回文件名,并在另一个命令中返回行号,但是我似乎无法将它们组合在一起。 档案名称: find . -type f -exec grep -l 'string to search' {} \; 行号: find . -type f -exec grep -n 'string to search' {} \; grep find — 丹尼·乔里斯 source
51 命令行开关-H强制grep打印文件名,即使只有一个文件也是如此。 % grep -n 7 test.in 7:7 % grep -Hn 7 test.in test.in:7:7 -H, --with-filename Print the filename for each match. 请注意,正如Kojiro在评论中所说,这不属于POSIX标准;它在GNU和BSD grep中都存在,但是某些系统可能没有它(例如Solaris)。 — 凯文 source 4 可以通过指出-Hto 的标志grep是非标准的GNU扩展并为非GNU系统提出替代方法来改善此答案。 — kojiro 2012年
22 find . -type f -exec grep -n 'string to search' /dev/null {} + (或使用GNU grep,请参见该-H选项) — 斯特凡·查泽拉斯 source +和-H都很好,谢谢! — Danny_Joris 并与此答案有关:unix.stackexchange.com/questions/3682/…– — Danny_Joris 4 +1正确,因为导致grep具有多个文件名args将迫使其输出匹配的文件名。聪明! — kojiro 2012年
-1 如果您的grep支持递归-r标志,则可以解决您的请求: grep -rn "String to search " * — 周杰伦 source 1 没错,但是我看不到现有答案会增加什么。 — 通配符 如果当前目录中只有一个文件(非点文件),则不会显示文件名。 — G-Man说'Resstate
-H
to 的标志grep
是非标准的GNU扩展并为非GNU系统提出替代方法来改善此答案。