使用Ag(" The Silver Searcher")查找十六进制代码

时间:2015-03-30 14:55:07

标签: bash shell ag

我曾经使用find命令为linux在PHP代码中找到十六进制代码,如下所示:

find "/www_root/myfile" -type f -name "*.php" | xargs grep -il x29

上面的命令就像一个魅力,但我可能需要一个更快的搜索器,因为我的文件不断增长。

我想使用The Silver Searcher ag命令进行测试,我一直在搜索如何使用" ag"来查找十六进制代码。命令,但在他们的文档中找不到任何内容。所以,我在这个论坛,寻求答案,希望有人使用银色搜索器ag搜索十六进制代码。

2 个答案:

答案 0 :(得分:1)

不知何故,我没有早点发现这一点,但现在已经找到了。我不明白的实际上是“ag”命令和可以使用的功能,但现在没问题。

我会在这里分享答案,以防万一有人可能需要它。为了替换我之前质疑的find命令,我们可以使用:

ag --php -l 'x29' "/www_root/myfile"

上一个命令的输出类似于:

/www_root/myfile/menus.php

如果找到更多文件,则会列出由新行“\ n”分隔的文件:

/www_root/myfile/menus.php
/www_root/myfile/contents.php

如果您想知道哪些行号,则可以删除“-l”属性,然后将其替换为“--numbers”:

ag --php --numbers 'x29' "/www_root/myfile"

输出:

30:matches string found here
89:matches string found here

好的,现在我们可以将它与“cut”命令结合使用,只获取行号:

ag --php --numbers 'x29' "/www_root/myfile" | cut -f1 -d:

输出:

30
89

大多数命令都类似于“ack”,因此对于想要使用“ag”的人来说,可以找到“ack”文档,因为他们已经记录了所有内容。

最后但并非最不重要的是,如果您想了解统计信息,可以按以下方式将--stats添加到上述命令中:

ag --php -l --stats 'x29' "/www_root/myfile"

将显示该简单命令,如下所示:

31 matches
1624 files searched
18686162 bytes searched
0.094022 seconds

所以,是的,选择The Silver Searcher是正确的选择。这就是全部,并有一个美好的一天。

答案 1 :(得分:0)

另请查看findrepo您可以使用的内容:

cd /www_root/myfile && findrepo -n 'x29' '*.php'

这应该比ag快(我很惊讶你说你的初始find | xargs grep命令慢于ag