目前,当我需要在代码中搜索复杂模式时,我通常使用find和grep的组合形式:
find / \( -type f -regextype posix-extended -regex '.*python3.*py' \) -exec grep -EliI '\b__[[:alnum:]]*_\b' {} \; -exec cat {} \; > ~/python.py
虽然看起来很长,但如果您使用zsh,实际上非常短。我只需输入f(第一个字符),就可以直接从命令历史记录中转到此命令。此外,在find / grep中的正则表达式是标准化和经过测试的,因此没有惊喜或缺少搜索。
ripgrep / ag等都是新软件,当原始维护者失去兴趣时,可能不会得到支持。
1. 是否有计划在ag / ack / rg中包含.gitignore规则或优化,在grep /其他版本的grep中为什么不包含这些优化?是否有任何原因? 2. 对于那些已经转换的人们:您们认为转换到rg / ag / ack是否值得,特别是因为这些工具也需要学习曲线?
ack '\b__[[:alnum:]]*_\b'
(或者ack --python '\b__[[:alnum:]]*_\b'
来限制搜索到Python文件中)。 - melpomeneack
很容易使用:相对于grep
的主要复杂性/特点是它使用Perl正则表达式而不是POSIX表达式。另一个区别是,虽然grep
是一个出色的通用工具,但ack
专门为程序员的需求而设计。 - John1024