在所有 .txt 文件中搜索字符串

在所有 .txt 文件中搜索字符串

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在这些文件中搜索即可。

相关内容