Glob Patterns

Glob patterns are a way of specifying file paths using wildcard characters. They are commonly used in command-line interfaces and programming languages to specify sets of files or directories that match a certain pattern. Here are some common wildcard characters that you might see in glob patterns:

*: Matches any sequence of characters (including none)
?: Matches any single character
[]: Matches any character in the specified set or range
!: Matches any character not in the specified set or range
For example, suppose you have a directory with the following files:


Here are some example glob patterns and the files they would match:

*.txt: Matches file1.txt, file2.txt
file?.*: Matches file1.txt, file2.txt, file3.dat
image[12].*: Matches image1.jpg, image2.png
!*.dat: Matches file1.txt, file2.txt, image1.jpg, image2.png

Glob patterns can also include directory names, and can be used recursively to match files in subdirectories. For example, the pattern */.txt would match all .txt files in the current directory and any subdirectories.

It's worth noting that glob patterns are not the same as regular expressions, which are a more powerful pattern-matching language that can match more complex patterns. Glob patterns are simpler and more limited, but are often easier to use and understand for simple file-matching tasks.

To match a folder and all its contents using glob patterns, you can use the double asterisk (**) wildcard character. This wildcard character matches zero or more directories and subdirectories, allowing you to specify a pattern that will match all files and directories within a given directory.

For example, let's say you have a directory called my_folder with the following structure:

├── file1.txt
├── subfolder1/
│   ├── file2.txt
│   └── file3.txt
└── subfolder2/
    ├── file4.txt
    └── subsubfolder/
        └── file5.txt

To match all files and directories within my_folder, you can use the following pattern:


This will match all files and directories within my_folder.

You can use this pattern in a variety of contexts, such as in command-line interfaces or in programming languages that support glob patterns. For example, in a Unix-based command line, you could use the ls command with the -R flag to list all files and directories within my_folder: