我如何在其文件内容中找到包含一个特定的文本序列的所有文件?
下一个不起作用. 它似乎显示系统中的每个单一文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
我如何在其文件内容中找到包含一个特定的文本序列的所有文件?
下一个不起作用. 它似乎显示系统中的每个单一文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
当前回答
此外,请参见 The Platinium Searcher,这类似于 The Silver Searcher,并写在 Go。
例子:
pt -e 'text to search'
其他回答
使用:
grep -c Your_Pattern *
这将报告您的模式在当前目录中的每个文件中有多少副本。
包含特定文本的文件名列表
首先,我相信你使用了 -H 而不是 -l. 你也可以尝试在引用中添加文本,其次是 {} \。
find / -type f -exec grep -l "text-to-find-here" {} \;
例子
假设您正在寻找包含特定文本“Apache 许可证”的文件在您的目录中,它将显示一些类似于下面的结果(结果将根据您的目录内容不同)。
bash-4.1$ find . -type f -exec grep -l "Apache License" {} \;
./net/java/jvnet-parent/5/jvnet-parent-5.pom
./commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.pom
./io/swagger/swagger-project/1.5.10/swagger-project-1.5.10.pom
./io/netty/netty-transport/4.1.7.Final/netty-transport-4.1.7.Final.pom
./commons-codec/commons-codec/1.9/commons-codec-1.9.pom
./commons-io/commons-io/2.4/commons-io-2.4.pom
bash-4.1$
取消案例敏感性
即使你不使用案例如“文本”与“文本”,你可以使用 -i 交换来忽略案例。
避免混乱并安装 ack-grep. 它消除了许多许可和引用问题。
apt-get install ack-grep
然后转到您想要搜索的目录,并运行下面的命令。
cd /
ack-grep "find my keyword"
要搜索字符串和输出,就是与搜索字符串相同的字符串:
for i in $(find /path/of/target/directory -type f); do grep -i "the string to look for" "$i"; done
吉:
for i in $(find /usr/share/applications -type f); \
do grep -i "web browser" "$i"; done
要显示包含搜索字符串的文件名:
for i in $(find /path/of/target/directory -type f); do if grep -i "the string to look for" "$i" > /dev/null; then echo "$i"; fi; done;
吉:
for i in $(find /usr/share/applications -type f); \
do if grep -i "web browser" "$i" > /dev/null; then echo "$i"; \
fi; done;
您可以使用捕捉工具重复搜索当前文件夹,如:
grep -r "class foo" .
注意: -r - 重复搜索分支机构。
grep "class foo" **/*.c
如果你有错误,你的论点太长,考虑缩短你的搜索,或者使用找到合成代替,如:
find . -name "*.php" -execdir grep -nH --color=auto foo {} ';'
或者使用Ripgrep。
rg "class foo" .
它比任何其他工具,如 GNU/BSD grep, ucg, ag, sift, ack, pt 或类似,因为它是建立在Rust的 regex 引擎的顶部,使用终端自动化,SIMD和攻击性字体优化,使搜索非常快。
-i - 不敏感的搜索. -I - 忽略二进制文件. -w - 搜索完整的单词(相反的部分单词匹配)。 -n - 显示您的匹配线. -C/--背景(例如 -C5) - 增加背景,所以你看到周围的代码. --color=auto - 标记匹配文本. -H - 显示文件名,在文本中找到。