¥
立即购买

Linux文件内容搜索专家

37 浏览
2 试用
0 购买
Dec 14, 2025更新

本提示词专为Linux系统文件内容搜索场景设计,能够根据用户指定的搜索字符串和目录路径,生成精准高效的命令行搜索方案。提示词采用结构化工作流程,确保输出的命令具备技术准确性、操作安全性和执行效率。适用于系统维护、日志分析、代码审查等多种技术场景,帮助用户快速定位目标内容并理解搜索原理。

  • 搜索命令 LC_ALL=C grep -RInPH --binary-files=without-match --exclude='.gz' --exclude='.xz' --exclude='*.zip'
    '(?<![0-9])(?:502|503|504)(?![0-9])|upstream timed out|connection reset by peer|recv timeout' /var/log/nginx

  • 命令解析

    • LC_ALL=C:使用纯ASCII本地化,加速正则匹配与IO处理。
    • grep:
      • -R:递归搜索当前目录及子目录(跟随符号链接)。
      • -I/--binary-files=without-match:将二进制文件视为不匹配,避免误判与乱码。
      • -n:输出匹配行号。
      • -H:始终显示文件名(即使只匹配到单个文件)。
      • -P:启用PCRE(Perl正则),以支持 lookbehind/lookahead 和非捕获分组。
      • --exclude='*.gz' 等:排除压缩文件,避免无意义解压成本。
    • 正则部分:
      • (?<![0-9])(?:502|503|504)(?![0-9]):精确匹配独立的 502/503/504,避免匹配到 15021、5020 这类数字片段。
      • upstream timed out|connection reset by peer|recv timeout:匹配常见 Nginx upstream 超时与对端复位类错误信息。
  • 预期输出

    • 典型格式:/var/log/nginx/error.log:12345:upstream timed out (110: Connection timed out) while reading response header from upstream, ...
    • 每行包含:文件路径:行号:匹配内容;可能返回多文件多行结果。
  • 使用提示

    • 如果系统 grep 不支持 -P(PCRE),请使用备用命令(ERE版本,边界判定略弱): LC_ALL=C grep -RInEH --binary-files=without-match --exclude='.gz' --exclude='.xz' --exclude='*.zip'
      '(^|[^0-9])(502|503|504)([^0-9]|$)|upstream timed out|connection reset by peer|recv timeout' /var/log/nginx
    • 如需包含压缩日志(.gz),可用 find + zgrep(递归且安全处理空格文件名): find /var/log/nginx -type f -name '*.gz' -print0 | xargs -0 zgrep -nHIE
      '(^|[^0-9])(502|503|504)([^0-9]|$)|upstream timed out|connection reset by peer|recv timeout'
    • 权限不足导致的报错可忽略或重定向: ... 2>/dev/null
    • 若仅关注错误日志可缩小范围提高性能: --include='error.log*' 或 --include='err'
  • 进阶选项

    • 使用 ripgrep(更快,自动忽略二进制;若已安装): rg -n --pcre2 -g '!*.gz' '(?<![0-9])(?:502|503|504)(?![0-9])|upstream timed out|connection reset by peer|recv timeout' /var/log/nginx
      • 如需包含压缩:find /var/log/nginx -type f -name '*.gz' -print0 | xargs -0 zgrep -nHIE '...相同正则...'
    • 限定日期或大文件优先:结合 find 先筛选近7天文件,提高速度: find /var/log/nginx -type f -mtime -7 ! -name '*.gz' -print0 | xargs -0 grep -nHIP
      '(?<![0-9])(?:502|503|504)(?![0-9])|upstream timed out|connection reset by peer|recv timeout'
    • 高亮匹配但保持可解析输出(必要时去掉颜色): 加 --color=never 保证适合管道处理;需要高亮时改为 --color=always 并在终端查看。
    • 统计概览(按文件计数): grep -RIlP --exclude='*.gz' '(?<![0-9])(?:502|503|504)(?![0-9])|upstream timed out|connection reset by peer|recv timeout' /var/log/nginx | xargs -r grep -nHcP '(?<![0-9])(?:502|503|504)(?![0-9])|upstream timed out|connection reset by peer|recv timeout'

以上方案在准确性与性能之间平衡,优先使用 PCRE 确保 502/503/504 的精确匹配,避免误报。

  • 搜索命令

    • 首选(支持 PCRE 的 grep) grep -P -nH -I -d skip --color=never '^(?i)PermitRootLogin\s+yes|^PasswordAuthentication\s+yes|^ChallengeResponseAuthentication\s+yes' /etc/ssh/*

    • 兼容性备选(不依赖 -P,使用 POSIX ERE) grep -E -nH -I -d skip --color=never '^(?i)PermitRootLogin[[:space:]]+yes|^PasswordAuthentication[[:space:]]+yes|^ChallengeResponseAuthentication[[:space:]]+yes' /etc/ssh/*

  • 命令解析

    • 通用参数
      • /etc/ssh/*:仅匹配 /etc/ssh 当前目录下的条目,不递归子目录
      • -n:输出匹配所在行号
      • -H:始终显示文件名
      • -I:跳过二进制文件
      • -d skip:遇到目录时跳过,避免“Is a directory”报错,确保仅当前目录范围
      • --color=never:禁止颜色转义,确保标准输出干净
    • PCRE 版特性(-P)
      • -P:启用 PCRE,支持 \s 与内联标志 (?i)
      • 正则:
        • ^:行首锚定
        • (?i):大小写不敏感标志(位于模式起始处,通常对整个模式生效;与 -P 配合可满足给定表达式)
        • \s+:一个或多个空白字符(空格/Tab)
        • |:多分支匹配三个指令行
    • POSIX 版特性(-E)
      • -E:扩展正则
      • 用 [[:space:]]+ 替代 \s+,与 POSIX 兼容
      • 内联 (?i) 在多数 grep 中会被按文本解释,若需全局大小写不敏感,可在此命令上增加 -i
  • 预期输出

    • 形如: /etc/ssh/sshd_config:12:PermitRootLogin yes /etc/ssh/sshd_config:34:PasswordAuthentication yes /etc/ssh/sshd_config.d/01-custom.conf:5:ChallengeResponseAuthentication yes
    • 若无命中则无输出,退出码为 1(命中则为 0)
  • 使用提示

    • 关于大小写不敏感:
      • 所给模式中 (?i) 一般会对整个模式生效(PCRE 行为),若在您的环境中仅首个分支大小写不敏感,可显式加 -i 确保三者均不区分大小写: grep -P -i -nH -I -d skip --color=never '^(?i)PermitRootLogin\s+yes|^PasswordAuthentication\s+yes|^ChallengeResponseAuthentication\s+yes' /etc/ssh/*
    • 仅列出包含风险设置的文件名(不显示内容): grep -P -l -I -d skip '^(?i)PermitRootLogin\s+yes|^PasswordAuthentication\s+yes|^ChallengeResponseAuthentication\s+yes' /etc/ssh/*
    • 当系统 grep 不支持 -P(常见于 BusyBox):
      • 使用 POSIX 备选命令(上面第二条),并在需要时加 -i: grep -E -i -nH -I -d skip --color=never '^(permitrootlogin)[[:space:]]+yes|^(passwordauthentication)[[:space:]]+yes|^(challengeresponseauthentication)[[:space:]]+yes' /etc/ssh/*
    • 仅搜索常规文件更稳妥(严格限制“当前目录”且排除目录/管道等): find /etc/ssh -maxdepth 1 -type f -print0 | xargs -0 grep -P -nH -I --color=never '^(?i)PermitRootLogin\s+yes|^PasswordAuthentication\s+yes|^ChallengeResponseAuthentication\s+yes'
  • 进阶选项

    • 忽略被注释的行并允许前置空白(更贴合 sshd_config 实际书写风格): grep -P -nH -I -d skip --color=never '^(?!\s*#)\s*(?i:PermitRootLogin|PasswordAuthentication|ChallengeResponseAuthentication)\s+yes' /etc/ssh/*
      • 说明:
        • ^(?!\s*#)\s*:行首允许空白且排除注释行
        • (?i:... ):仅对括号内的关键词大小写不敏感
    • 查看上下文,便于审阅附近配置: grep -P -nH -I -d skip -C2 --color=never '^(?i)PermitRootLogin\s+yes|^PasswordAuthentication\s+yes|^ChallengeResponseAuthentication\s+yes' /etc/ssh/*
    • 仅关心是否存在命中(脚本中用退出码判断): grep -P -q -I -d skip '^(?i)PermitRootLogin\s+yes|^PasswordAuthentication\s+yes|^ChallengeResponseAuthentication\s+yes' /etc/ssh/* && echo "found" || echo "not found"

搜索命令

  • 首选(ripgrep,推荐,支持深度限制,默认忽略.gitignore):
    rg -I -l --max-depth 3 --hidden -g '!/.git/' -e 'AKIA[0-9A-Z]{16}|-----BEGIN RSA PRIVATE KEY-----|-----BEGIN EC PRIVATE KEY-----|api_key=' /home/dev/repos/analytics-service

  • 兼容方案(GNU find + grep,系统常见,支持深度限制):
    find /home/dev/repos/analytics-service -maxdepth 3 -type f -not -path '/.git/' -print0 | xargs -0 grep -E -I -l 'AKIA[0-9A-Z]{16}|-----BEGIN RSA PRIVATE KEY-----|-----BEGIN EC PRIVATE KEY-----|api_key='

  • 可选(ag/The Silver Searcher,若已安装):
    ag -l --depth 3 'AKIA[0-9A-Z]{16}|-----BEGIN RSA PRIVATE KEY-----|-----BEGIN EC PRIVATE KEY-----|api_key=' /home/dev/repos/analytics-service

命令解析

  • 通用正则(三个命令均适用)
    • AKIA[0-9A-Z]{16}:匹配AWS Access Key ID
    • -----BEGIN RSA PRIVATE KEY-----:匹配RSA私钥头
    • -----BEGIN EC PRIVATE KEY-----:匹配EC私钥头
    • api_key=:匹配包含api_key=的配置项
    • 使用单引号包裹避免shell解释;使用“|”作为或条件
  • ripgrep 版本
    • -I:忽略二进制文件(提升速度,减少误报)
    • -l:仅输出匹配到的文件名(每文件一次)
    • --max-depth 3:限制递归深度为3层子目录(可按需调整)
    • --hidden:包含隐藏文件/目录(例如以“.”开头的文件)
    • -g '!/.git/':显式排除所有.git目录内容,避免噪声
    • -e '...':指定正则表达式
  • find + grep 版本
    • find /path -maxdepth 3:限制最大递归深度为3
    • -type f:仅文件
    • -not -path '/.git/':排除.git目录
    • -print0 | xargs -0:以NUL分隔,安全处理空格/特殊字符文件名
    • grep -E:使用扩展正则支持“|”和“{n}”
    • -I:忽略二进制文件
    • -l:仅输出文件名
  • ag 版本
    • -l:仅文件名
    • --depth 3:限制搜索深度

预期输出

  • 每行一个匹配到的文件路径(绝对/相对取决于命令与当前目录),不包含匹配内容或行号,例如:
    • /home/dev/repos/analytics-service/config/settings.yml
    • /home/dev/repos/analytics-service/src/utils/credentials.py

使用提示

  • 深度调整:将上述命令中的“3”替换为所需子目录深度(例如1、2、5等)。
  • 性能建议:
    • 优先使用ripgrep(rg),其默认并行和.gitignore支持能显著加速。
    • 若仓库很大,可加上--max-filesize 1M限制超大文件:
      rg ... --max-filesize 1M ...
  • 结果唯一性:-l保证每个匹配文件仅输出一次,无需额外去重。
  • 可见性:
    • 已包含--hidden,以覆盖隐藏文件;同时显式排除了.git目录,避免扫描版本库索引对象。
  • 仅输出基名(如果你只想文件名而非路径):
    rg ... | xargs -n1 basename | sort -u

进阶选项

  • 限定文件类型以进一步加速(ripgrep):
    • 仅代码文件:
      rg -I -l --max-depth 3 --hidden -g '!/.git/' -t py -t js -t ts -t go -t java -e '...pattern...' /home/dev/repos/analytics-service
  • 排除常见大文件或资产目录:
    • 添加多个-g排除规则,例如:
      -g '!/node_modules/' -g '!/dist/' -g '!/build/' -g '!**/.min.'
  • 验证匹配详情(排查误报时临时使用):
    • 将-l改为-n,查看匹配行与行号:
      rg -I -n --max-depth 3 --hidden -g '!/.git/' -e '...pattern...' /home/dev/repos/analytics-service
  • 仅在已跟踪文件中搜索(Git仓库,减少范围):
    git -C /home/dev/repos/analytics-service ls-files -z | xargs -0 rg -I -l -e 'AKIA[0-9A-Z]{16}|-----BEGIN RSA PRIVATE KEY-----|-----BEGIN EC PRIVATE KEY-----|api_key='
    注意:此方法不支持深度限制,但能显著减少扫描对象数量。

以上命令均为安全的只读搜索,不会修改任何文件或权限。根据需要调整深度数值与排除规则即可。

示例详情

解决的问题

面向日志分析、代码检索与配置核查等日常与应急场景,一句话描述“要找什么+在哪找”,即可生成一套可直接复制执行的Linux内容搜索方案。目标是:1) 快速定位目标信息,显著缩短检索与排障时间;2) 默认安全与只读策略,避免误操作风险;3) 根据文件规模与类型选择更高效的工具与参数组合;4) 提供清晰解释与可复用模板,便于团队统一标准、沉淀最佳实践;5) 通过备选方案与进阶技巧,满足从新手到资深工程师的不同深度需求,促进从试用到长期使用。

适用用户

运维工程师 / 系统管理员

在多台服务器与复杂目录中,快速定位报错、超时与异常关键字;按时间范围筛选日志,导出可分享命令用于接班与复盘,确保变更窗口内迅速止血。

开发工程师 / 代码审查者

在大型仓库中搜索函数调用、配置引用与可疑字符串,排除生成目录与依赖包,输出匹配上下文,缩短缺陷定位与回归验证周期。

安全与合规专员

一键扫描敏感词、密钥与许可证文本,限定文件类型与路径白名单,固定检索策略与输出格式,支持审计留痕与复查闭环。

特征总结

一键生成适配场景的搜索命令,按关键词与目录定制,快速定位日志、代码与配置内容。
自动优化工具与参数,兼顾准确性与速度,避免误匹配与漏查,省时更省心。
内置安全校验与风险提示,默认只读执行,防止误删误改,保护生产环境稳定。
支持按文件类型、大小与时间范围筛选,精准聚焦目标文件,减少无效扫描。
提供清晰命令解析与示例输出,新手亦能上手,团队协作中便于复现与审计。
进阶选项一键调用,支持正则、排除路径与并发策略,轻松应对海量仓库。
根据目录规模智能建议执行策略,降低资源占用,保证服务器在峰值时仍稳定。
模板化输入参数,重复搜索可快速调用,沉淀团队最佳实践与可复用方法。
跨场景覆盖日志排障、合规审计与代码审查,帮助业务快速定位问题与证据。

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥20.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 582 tokens
- 4 个可调节参数
{ 搜索字符串 } { 目标目录 } { 搜索范围 } { 输出格式 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59