test123
有没有办法在硬盘上的所有文本文件中搜索字符串?
答案1
您可以使用find
来获取所有.txt
文件,然后获取grep
所需的字符串
$ find / -type f -name '*.txt' -exec grep 'test123' {} +
在哪里:
/
在所有服务器中搜索。-type f
只查找文件,不查找目录-name '*.txt'
查找所有.txt
文件-exec grep 'test123'
搜索test123
找到的所有文件{}
替换为当前文件名,该文件名出现在命令参数中的所有位置,而不仅仅是出现在单独的参数中+
它将显着缩短执行时间(因为它将在执行之前连接参数直到)
答案2
假设“所有文本文件”是指以 .txt 结尾的所有文件:
find / -type f -name '*.txt' -exec grep -i 'test123' {} \;
或者
find / -type f -name '*.txt' -exec grep -i 'test123' {} +
答案3
find / -type f -exec grep -I test123 {} +
+
使用而不是的版本\;
要快得多并且-I
忽略二进制文件。或者简单地使用递归 grep:
grep -Ir test123 /
您可能也想这样做,2>/dev/null
因为将会有很多“权限被拒绝”的行。
答案4
一些可以为您指明正确方向的东西:
find / -type f -name *.txt
查找所有 .txt 文件,假设您只有一个硬盘。然后只需使用grep
在这些文件中搜索即可。