linux find 之后 查找文件内容 并输出文件路径

需求

文件数量过多,要查找关键字的文件,首先想到的 find 查找文件并 使用 grep 搜索内容

解决1

find /path/to/search -type f -name "pattern" -exec grep -Hn "search_string" {} \;

说明

  • /path/to/search 是您要开始搜索的目录。
  • -type f 表示只查找文件。
  • -name "pattern" 指定文件名模式,例如 "*.txt" 查找所有.txt文件。
  • -exec grep -Hn "search_string" {} \; 执行grep命令,其中:

    • -H 选项确保即使只搜索一个文件,也显示文件名。
    • -n 会在匹配的每一行前加上行号。
    • {} 会被替换为find找到的每个文件名。
    • \; 结束-exec操作。

注意: 不能省略最后的 \;

解决2

find /path/to/search -type f -name "pattern" -print0 | xargs -0 grep -Hn "search_string"

说明

  • -print0 和 xargs -0 的组合用于处理包含特殊字符的文件名。
  • 其余参数与上述-exec方法相同。