Linux递归搜索同时包含两个字符串的文件并输出路径

本教程介绍如何使用 grepxargs 命令递归搜索包含两个特定字符串的文件,并只输出文件路径。

场景: 假设您需要在 /path/to/search 目录下查找所有同时包含字符串 '626.89' 和 '-55.06' 的文件。

命令:

grep -rlZ '626.89' /path/to/search | xargs -0 grep -l '[-]55.06'

解释:

  • grep -rlZ '626.89' /path/to/search: * grep: 用于搜索文本文件的命令行工具。
    • -r: 递归搜索指定目录下的所有文件和子目录。
    • -l: 只输出包含匹配项的文件名,而不是匹配的行。
    • -Z: 使用空字符 ('�') 而不是换行符来分隔文件名,这对于包含空格或特殊字符的文件名更安全。
    • '626.89': 要搜索的第一个字符串。
    • /path/to/search: 要搜索的目录路径。
  • xargs -0 grep -l '[-]55.06':
    • xargs: 将输入转换为命令行参数的命令行工具。
    • -0: 从标准输入读取时,将空字符 ('�') 作为分隔符,与 grep -Z 选项配合使用。
    • grep -l '[-]55.06': 对 grep 的第二次调用,搜索包含第二个字符串 '[-]55.06' 的文件,并只输出文件名。使用 '[-]55.06' 可以避免 - 被解释为 grep 的选项。

使用方法:

  1. /path/to/search 替换为您要搜索的实际目录路径。
  2. '626.89''[-]55.06' 替换为您要搜索的实际字符串。
  3. 运行命令,您将看到包含这两个字符串的文件的路径列表。

注意:

  • 使用单引号将字符串括起来可以避免 shell 对特殊字符的解释。
  • 如果要搜索的字符串包含空格或特殊字符,请使用单引号将其括起来。
Linux递归搜索同时包含两个字符串的文件并输出路径

原文地址: https://www.cveoy.top/t/topic/eGe2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录