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

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

我试过了

grep -r -i my_string 

我在一个带有两个小文件的测试文件夹中尝试了它,但它找不到字符串。

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

您在文件中搜索文件名或单词吗? grep在文件里面搜索,这似乎是你想要的。

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

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

正如@plink所说,使用

 grep -r -o -i "your_string" *` 

(或*.* ,或其他filespec)。 错误可以忽略。 如果您遇到很多错误,可以将2>/dev/null附加到末尾,这会将stderr重定向到空设备。