根据这个线程:
问:我的理解是ack使用Perl衍生的正则表达式,对吗?
答:是的。实际上,ack是用Perl编写的,只是将表达式转发给内部引擎。
现在,我在当前目录下有一个文件:
media_group_xml_producer.py
当我做:
> ack -n '.*group.*producer.*'
或更直接地:
> ack -n --python '.*group.*producer.*'
我没有任何结果。据我所知,正则表达式应与此文件匹配。为什么会错过呢?
ack匹配文件的内容,而不是文件名。要查找名称与正则表达式匹配的文件,请在文件名列表上运行ack:
ls | ack '.*group.*producer.*'
你做了什么,即
ack -n '.*group.*producer.*'
而是在当前目录中查找包含与正则表达式匹配的文件。
ls
不会剪切它,因为它没有选项来显示路径和文件名。而是使用tree
带有标志-i
(不打印缩进行)和-f
(打印完整文件名)的标志。
tree -if | ack 'shepherd.*\.pyc?'
退货
./models/shepherd.py
./models/shepherd.pyc
./services/shepherd-related/flock_of_sheep.py
./services/shepherd-related/flock_of_sheep.pyc
当然,以上所有方法均适用于grep
和ack
。但是ack
绝对在各个方面都更好。:-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句