编译C ++项目时,许多共享对象文件都是使用
等扩展名创建的.so
.so.0
.so.7
.so.0.7
我需要将所有这些添加到我的.gitignore
文件中。如果这是一个正则表达式,我可以使用
\.so[\.0-9]*
但是,the documentation表示.gitignore
将模式视为适合
fnmatch(3)
使用FNM_PATHNAME
标记消费的shell glob
我找不到用我发现的fnmatch
文件做我想做的事情。有没有办法做到这一点?
答案 0 :(得分:13)
虽然@SpeakEasy的答案可以使用.so
在一个步骤中忽略*.so*
个文件,但对于忽略指定格式的文件的用例,您可以在{{1}中使用两个条目}更具体的忽略规则
.gitignore
gitignore文件中的每一行都指定了一种模式。
Git将模式视为适合
消费的shell globfnmatch
需要注意的重要一点是,模式与正则表达式不同。
Python有一个名为 fnmatch 的模块,您可以使用它来验证特定文件名是否与模式匹配。
示例示例:
*.so
*.so.[0-9]*
答案 1 :(得分:5)
添加行*.so*
不起作用吗?或者你需要更好的控制吗?
答案 2 :(得分:1)
我认为你可以用两行来完成它:
.so
.so.[0-9]*
答案 3 :(得分:0)
答案 4 :(得分:0)
Python有一个名为fnmatch的模块,您可以使用它来验证特定文件名是否与模式匹配。
不像@mu无那样完全正确。
https://git-scm.com/docs/gitignore
例如,“/ *。c。”匹配“cat-file.c”但不匹配“mozilla-sha1 / sha1.c”。
但我尝试了fnmatch:
_throw
fnmatch与>>> p = "/*.c"
>>> f = "cat-file.c"
>>> fnmatch(f, p)
False
>>> f2 = "abc/def/cat-file.c"
>>> fnmatch(f2, p)
False
>>> p2 = "*.c"
>>> fnmatch(f, p2)
True
>>> fnmatch(f2, p2)
True
不匹配,但.gitignore支持。