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
ack-grep
通过键入安装sudo apt-get install ack-grep
ack-grep foo
. 它列出了该目录下所有文件中的所有匹配项。您可以使用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)
只需gnome-search-tool
使用sudo apt-get install gnome-search-tool
“搜索文件”中的“搜索”进行安装并启动它。
见下图:
享受。
归档时间: |
|
查看次数: |
172235 次 |
最近记录: |