Linux递归搜索同时包含两个字符串的文件并输出路径
Linux递归搜索同时包含两个字符串的文件并输出路径
本教程介绍如何使用 grep 和 xargs 命令递归搜索包含两个特定字符串的文件,并只输出文件路径。
场景: 假设您需要在 /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的选项。
使用方法:
- 将
/path/to/search替换为您要搜索的实际目录路径。 - 将
'626.89'和'[-]55.06'替换为您要搜索的实际字符串。 - 运行命令,您将看到包含这两个字符串的文件的路径列表。
注意:
- 使用单引号将字符串括起来可以避免 shell 对特殊字符的解释。
- 如果要搜索的字符串包含空格或特殊字符,请使用单引号将其括起来。
原文地址: https://www.cveoy.top/t/topic/eGe2 著作权归作者所有。请勿转载和采集!