如何使用“ag”忽略多个文件 The Silver Searcher

如何使用“ag”忽略多个文件 The Silver Searcher

有一个选项--ignore允许指定要忽略的文件。目前我只能通过执行以下操作来忽略多个文件--ignore file1 --ignore file2.......

尝试使用--ignore "*assets*|*scripts*"没有任何作用。那么有什么我不知道的问题吗?

答案1

您可以使用大括号扩展,例如

ag pattern --ignore={'*assets*','*scripts*'}  path_to_search

或者,如格伦在这里建议,过程替换:

ag pattern -p <(printf "*%s*\n" assets scripts) path_to_search

答案2

格式是--忽略要排除的模式

➜  proj git:(develop) ✗ ag User -l  | wc
     82      82    2951
➜  proj git:(develop) ✗ ag User -l --ignore 'tests*' | wc
     65      65    2348

证明

➜  exp tree                                              
.
├── good.py
├── migrations.py
├── test2.py
├── test_another.py
└── tests.py

➜  for i in *.py; do echo "User" > $i; done 
➜  exp ag -l --ignore 'test*' --ignore 'migrations*' User
good.py

所以只有一个文件好.py已返回,所有其他内容均因模式而被过滤

答案3

你可以添加

*assets*
*scripts*

到您的.gitignore.ignore文件。

来自自述文件:

It ignores file patterns from your .gitignore and .hgignore.
If there are files in your source repo you don't want to search, 
just add their patterns to a .ignore file. 

答案4

这个话题来得有点晚了。

,中ag--ignore不支持正则表达式。因此,如果您想忽略所有带有“.json”扩展名的文件,您需要使用--ignore='*.json'而不是--ignore='.*.json'

如果您想忽略多个文件扩展名,可以执行以下操作: ag --ignore='*.yaml' --ignore='*.json'

上面将忽略带有yamljson扩展名的文件。

相关内容