如何列出具有特定内容的 .txt 文件?

Sam*_*und 5 linux grep find search files

我如何列出所有带有“Ubuntu”字样的完整路径的 .txt 文件。忽略非文本文件。在比较值时,您应该忽略大小写,即 UBUNTU 或 ubuNtu 或 UbUnTu 被视为等于给定的搜索短语。

Tho*_*hor 8

GNU grep 支持基于全局模式的递归搜索,例如:

grep --include='*.txt' -ril ubuntu /path/to/dir
Run Code Online (Sandbox Code Playgroud)

如果您不搜索正则表达式,如果您包含固定字符串匹配 ( -F) ,则此过程会快得多。另一个优化是-i在您知道不需要时删除 ignore-case ( )。


Rom*_*est 3

简单find+grep解决方案:

find . -type f -name "*.txt" -exec grep -li --binary-files=without-match 'ubuntu' {} \;
Run Code Online (Sandbox Code Playgroud)

grep细节:

  • l- 抑制正常输出;相反,打印通常会打印输出的每个输入文件的名称
  • i- 忽略大小写区别,以便仅大小写不同的字符彼此匹配