我想按内容搜索整个服务器。(文本文件)
当我尝试 grep -rl "text here" 时,它会冻结。
你会怎么做?
通常需要多长时间?
答案1
使用该命令时,您需要指定一个文件grep
。使用您正在使用的命令,您将在标准输入中进行搜索...
尝试grep -r "test" directory
。
答案2
find / -name "*.txt" -exec grep "text here" {} \; -print 2>/dev/null
用人类的语言可以解释为:
- 寻找
- 从...开始 /
- 在所有名为 *.txt 的文件中(引号是为了绕过 shell 解释)
- 根据结果,执行以下操作
- grep“在这里测试”
- 在文件 {} 中
- exec 结束 (\;) 转义语句结束
- 打印匹配的文件
- 在接收器中重定向错误消息(因为您可能不是root,否则只需sudo即可)。
答案3
如果你忘记指定要搜索的文件类型,
请确保以 root 身份登录
cd /
grep -rl "text here" * > /tmp/match.txt
这将花费很长时间,您可以稍后通过检查 /tmp/match.txt 来收集结果
答案4
以下命令搜索当前工作目录及其所有子目录中所有以 .txt 结尾的文件:
find . -type f -name '*.txt' -exec grep -Hn "text here" {} \;