Reading Time: 1 minutes
Finding pathnames matching a Unix-style pattern in Python
The glob standard library helps to find pathnames matching a Unix-style pattern, using its glob() function. You can use Unix wildcards such as *, ? and character ranges with [ ].
# Directory structure of sample Folder │ 1ab.txt │ a2.txt │ a2b.txt │ abc.txt │ def.txt │ picture.jpg │ python.py │ word.docx └───dir1 file1underDir1.txt >>> import glob # The * denotes one or more characters >>> glob.glob('*.txt') # matches files with extension 'txt' ['1ab.txt', 'a2.txt', 'a2b.txt', 'abc.txt', 'def.txt'] >>> glob.glob('*.doc*') # matches files with extension having the string 'doc' in it. ['word.docx'] # The ? denotes a single character >>> glob.glob('??.txt') # matches text files with only two letters in its name. ['a2.txt'] # [character-range] matches any character lying in the said range. >>> glob.glob('[a-z][0-9].txt') # matches two-character named text files with an alphabetic first character & numeric second character. ['a2.txt'] >>> glob.glob('[a-z][0-9][a-z].txt') # matches three-character named text files with an alphabetic first character, numeric second character & an alphabetic third character. ['a2b.txt'] # The '**' pattern matches any file, directory or subdirectory. >>> glob.glob('**') ['1ab.txt', 'a2.txt', 'a2b.txt', 'abc.txt', 'def.txt', 'dir1', 'picture.jpg', 'python.py', 'word.docx']