在当前目录中递归搜索字符串

在当前目录中递归搜索字符串

我想从我所在的目录中递归搜索所有文件以查找特定字符串。

我试过

grep -r -i my_string

我尝试在一个包含两个小文件的测试文件夹中进行此操作,但找不到该字符串。

另外,是否有任何特殊的方式来定义“包含”而不是匹配整个单词?

答案1

您是在搜索文件名还是文件内的单词? grep 在文件内部搜索,这似乎就是您想要的。

grep 使用正则表达式 - 事实上,这就是“re”部分所代表的意思。因此,它不使用常规的 bash 通配符;也就是说,它abc*不会找到以 abc 开头的单词,而是会找到以 ab 开头,然后是零个或多个 c 的单词。但是,是的,如果您只是给它一个模式,它会在任何地方找到它,而不需要知道整个单词。如果您想找到整个单词,您需要创建一个正则表达式来告诉它。

但是,与大多数命令一样,您需要将文件名放在命令的末尾,因此您的示例只会停留在那里等待文件名。

正如 @plink 所说,使用

grep -r -o -i "your_string" *

(或*.*,或其他文件规范)。错误可以忽略。如果您收到大量错误,您可以将其附加2>/dev/null到末尾,这会将 stderr 重定向到空设备。

相关内容