VOOZH about

URL: https://www.geeksforgeeks.org/python/how-to-use-glob-function-to-find-files-recursively-in-python/

⇱ How to use Glob() Function to Find Files Recursively in Python - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

How to use Glob() Function to Find Files Recursively in Python

Last Updated : 3 Oct, 2025

Glob is a powerful pattern-matching technique widely used in Unix and Linux environments for matching file and directory names based on wildcard patterns. Python’s built-in glob module provides similar functionality, enabling you to easily find files and directories matching specific patterns. The glob module uses Unix shell-style wildcards such as:

  • * matches zero or more characters
  • ? matches exactly one character
  • [abc] or [a-z] matches any one character from the set or range

Because glob follows these patterns, it offers a simple yet powerful way to search files by name patterns without manually parsing directories.

Why Use glob?

  • Built-in module: No need to install external libraries.
  • Efficient: According to benchmarks, glob is generally faster than manual directory scanning.
  • Simple API: Easy to use for common and complex file searches.
  • Wildcard support: Search with flexible patterns, not just exact names.

Recursive File Search with glob

From Python 3.5 onwards, the glob module supports recursive searching using the ** pattern combined with the recursive=True argument. It's Key Points include:

  • ** means “this directory and all subdirectories, recursively.”
  • You must set recursive=True for ** to be interpreted as recursive.
  • Both glob.glob() (returns a list) and glob.iglob() (returns an iterator) support recursion.

Syntax

glob.glob(pathname, *, recursive=False)

glob.iglob(pathname, *, recursive=False)

  • pathname: The pattern string, which can include wildcards and directory paths.
  • recursive: Boolean flag to enable recursive matching with **.

Example:

Output :

👁 python-glob

Using Glob() function to find files recursively

We can use the function

glob.glob()

or

glob.iglob()

directly from glob module to retrieve paths recursively from inside the directories/files and subdirectories/subfiles.

Syntax:

glob.glob(pathname, *, recursive=False)
glob.iglob(pathname, *, recursive=False)

Note:

When recursive is set

True

"

**

" followed by path separator

('./**/')

will match any files or directories.

Example:

Output :

👁 python-glob

For older versions of python:

The most simple method is to use

os.listdir()

as it is specifically designed and optimized to allow recursive browsing of a directory tree. Or we can also use


to get all the files in directory and subdirectories and then filter out. Let us see it through an example-

Example:

Output :


./src/add.c
./src/subtract.c
./src/sub/mul.c
./src/sub/div.c

./src/add.c
./src/subtract.c
./src/sub/mul.c
./src/sub/div.c

./src/add.c
./src/subtract.c
./src/sub/mul.c
./src/sub/div.c
Comment
Article Tags: