我想从我所在的目录中递归搜索所有文件以查找特定字符串。
我试过
grep -r -i my_string
Run Code Online (Sandbox Code Playgroud)
我在一个带有两个小文件的测试文件夹中尝试了它,但它找不到字符串。
另外,是否有任何特殊的方式来定义“包含”而不是匹配整个单词?
Mar*_*ied 30
您是在搜索文件名还是文件中的单词?grep 在文件中搜索,这似乎是您想要的。
grep 使用正则表达式——事实上,这就是“re”部分所代表的意思。所以,它不使用普通的 bash 通配符;也就是说,abc*
不会找到以 abc 开头的单词,它会找到以 ab 开头的单词,然后是零个或多个 c 的后面。但是是的,如果你简单地给它一个模式,它会在任何地方找到它,而无需知道整个单词。如果你想找到整个单词,你需要创建一个正则表达式来告诉它。
但是,像大多数命令一样,您需要将文件名放在命令的末尾,因此您的示例将只是坐在那里等待文件名。
正如@plink 所说,使用
grep -r -o -i "your_string" *
Run Code Online (Sandbox Code Playgroud)
(或*.*
,或其他文件规范)。错误可以忽略。如果您收到很多错误,您可以追加2>/dev/null
到末尾,这会将 stderr 重定向到一个空设备。