我如何在其文件内容中找到包含一个特定的文本序列的所有文件?
下一个不起作用. 它似乎显示系统中的每个单一文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
我如何在其文件内容中找到包含一个特定的文本序列的所有文件?
下一个不起作用. 它似乎显示系统中的每个单一文件。
find / -type f -exec grep -H 'text-to-find-here' {} \;
当前回答
如果使用在您的例子中找到相似的,最好添加 -s ( - 没有消息) 捕捉,并在命令结束时 2>/dev/null 避免大量的许可拒绝的消息由捕捉发送,并找到:
find / -type f -exec grep -sH 'text-to-find-here' {} \; 2>/dev/null
更快、更容易的工具在同一用途中存在 - 请参见下面. 最好尝试它们,只要它们在您的平台上可用,当然:
更快、更容易的替代品
RipGrep - 最快的搜索工具周围:
rg 'text-to-find-here' / -l
ag 'text-to-find-here' / -l
ACK:
ack 'text-to-find-here' / -l
警告:除非你真的不能避免,不要从“/”(根目录)搜索,以避免漫长而不有效的搜索!因此,在上面的例子中,你最好用一个子目录名称替换“/”,例如“/home”取决于你实际上想要搜索的地方。
其他回答
可以使用,即使我们不寻找一个链条。
只是跑步,
grep -RIl "" .
将打印到所有文本文件的路径,即只有可打印的字符的文件。
如果你有一组文件,你会一直在检查,你可以列出他们的路径,例如:
alias fd='find . -type f -regex ".*\.\(inc\|info\|module\|php\|test\|install\|uninstall\)"'
然后你可以简单地过滤列表如下:
grep -U -l $'\015' $(fd)
将列表 fd 过滤到包含 CR 模式的文件。
我发现,将我感兴趣的文件会帮助我创建更容易的脚本,然后总是试图记住如何获得所有这些文件。 回复的物品工作,但早或晚你将不得不争取分散特定的文件类型。
如果您在 Git 存储库中,您可以使用:
git grep something
使用 pwd 从您所在的任何目录中搜索,向下滑动
grep -rnw `pwd` -e "pattern"
取决于您正在使用的 grep 版本,您可以忽略 pwd. 在更新的版本中,如果没有目录,则似乎是 grep 的默认情况。
这样:
格雷普 -rnw -e “模式”
或
格雷普 -rnw “模式”
他们会像上面那样做!
有一个名为The Silversearcher的新工具
sudo apt install silversearcher-ag
它与 Git 和其他 VCS 密切合作,所以您不会在.git 或其他目录中获得任何东西。
你可以简单地使用
ag "Search query"
它会为你完成任务!