When I compile my C++ project, many shared object files are created with extensions such as
.so
.so.0
.so.7
.so.0.7
I need to add all those to my .gitignore
file. Were this a regex, I could use
\.so[\.0-9]*
However, the documentation says that .gitignore
treats the pattern as a shell glob suitable for consumption by
fnmatch(3)
with theFNM_PATHNAME
flag
I found no way to do what I want with the fnmatch
documentations I found. Is there really no way to do this?
While the answer by @SpeakEasy can ignore .so
files in a single step using *.so*
, for your use case of ignoring files in formats specified, you can use two entries in your .gitignore
for more specific ignore rule
*.so
*.so.[0-9]*
From gitignore man page
Each line in a gitignore file specifies a pattern.
Git treats the pattern as a shell glob suitable for consumption by
fnmatch
The important thing to note is that the pattern is not the same as regular expressions.
Python has a module named fnmatch, you can use that to verify whether a particular filename matches the pattern or not.
Sample example:
import fnmatch
pattern = "*.so.[0-9]*"
filenames = ["a.so", "b.so.0", "b.so.11", "b.so.1.0", "b.so.1.0.12"]
for filename in filenames:
print filename, fnmatch.fnmatch(filename, pattern)
>>> a.so False
b.so.0 True
b.so.11 True
b.so.1.0 True
b.so.1.0.12 True
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With