如何从目录中的文本文件中查找单词

Moh*_*ani 36 command-line search directory find locate

假设我有一个名为 _file 的目录,并包含两个子目录,如 _1 和 _2,并且在每个子目录上都有一些文本文件。我想在这些文本文件之一中搜索像 foo 这样的词。我怎么能做到这一点?我想知道整个目录中哪些文本文件包含那个词?

sou*_*rce 73

如果你不想安装额外的软件,你可以简单地grep在终端中使用。要递归搜索目录,您可以使用该-r选项(请参阅man grep有关详细信息)。您正在寻找的语法可能是:

grep -r "[STRING TO SEARCH FOR]" "[DIRECTORY TO SEARCH]"
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果我想在“/tmp/testdir/”的所有子目录中的所有文件中搜索字符串“asdf”,则命令如下所示:

grep -r "asdf" "/tmp/testdir/"
Run Code Online (Sandbox Code Playgroud)

引号不是绝对必要的,但是如果您的字符串或目录路径包含空格,则您必须使用 \ 字符来屏蔽它们...


Mah*_*esh 10

  1. 打开一个终端。
  2. ack-grep通过键入安装sudo apt-get install ack-grep
  3. 切换到您要搜索的目录,然后键入ack-grep foo. 它列出了该目录下所有文件中的所有匹配项。


ter*_*don 8

您可以使用grep带有-l标志的递归来仅打印文件名而不是匹配的行:

grep -Rl foo .
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用find

find . -type f -exec grep -l foo {} +
Run Code Online (Sandbox Code Playgroud)

或者。你可以extglob正常使用grep

shopt -s extglob
grep -l foo **/*
Run Code Online (Sandbox Code Playgroud)


Par*_*rto 7

只需gnome-search-tool使用sudo apt-get install gnome-search-tool
“搜索文件”中的“搜索”进行安装并启动它。

见下图:

在此处输入图片说明

  1. 将“名称包含”部分留空。
  2. 选择您的文件夹。
  3. 展开“选择更多选项”部分并选择“包含文本”,然后按添加。
  4. 在此处输入您要搜索的文本,然后单击右下角的查找。

享受。