假设我有一个名为 _file 的目录,其中包含两个子目录,如 _1 和 _2,每个子目录中都有一些文本文件。我想在其中一个文本文件中搜索像 foo 这样的单词。我该怎么做?我想知道整个目录中哪些文本文件包含该单词?
答案1
如果您不想安装其他软件,只需grep
在终端中使用即可。要递归搜索目录,可以使用选项-r
(请参阅man grep
详细信息)。您正在寻找的语法可能是:
grep -r "[STRING TO SEARCH FOR]" "[DIRECTORY TO SEARCH]"
因此,例如如果我想在“/tmp/testdir/”的所有子目录的所有文件中搜索字符串“asdf”,命令如下:
grep -r "asdf" "/tmp/testdir/"
引号不是必需的,但如果您的字符串或目录路径包含空格,则必须使用 \ 字符来屏蔽它们...
答案2
- 打开一个终端。
ack-grep
通过键入来安装sudo apt-get install ack-grep
- 更改为您想要搜索的目录,然后输入
ack-grep foo
。它会列出该目录下所有文件中的所有匹配项。
答案3
您可以使用grep
带有-l
标志的递归来仅打印文件的名称而不是匹配的行:
grep -Rl foo .
或者,你可以使用find
:
find . -type f -exec grep -l foo {} +
或者,你可以使用extglob
正常的grep
shopt -s extglob
grep -l foo **/*
答案4
只需gnome-search-tool
使用sudo apt-get install gnome-search-tool
dash 中的搜索“搜索文件”进行安装并启动它即可。
参见下图:
- 将“名称包含”部分留空。
- 选择您的文件夹。
- 展开“选择更多选项”部分并选择“包含文本”,然后按添加。
- 在此处输入您要搜索的文本,然后单击右下角的“查找”。
享受。