我想从我所在的目录中递归搜索所有文件以查找特定字符串。
我试过
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 重定向到空设备。