How to Use Wildcards in Linux

In this article, we show how to use wildcards in Linux.
Wildcards are used in the linux shell to work with specific files that match what we are searching for.
It's a way of combing through files and using code, kind of like regular expressions, in order to select certain files that we are looking for.
So how do wildcards work?
Before we go over actual Linux code in the shell, let's first go over some actual wildcards that are used.
The following table below shows various wildcards and what they match
if used.
Wildcard | Matches |
* | Any characters |
? | Any single character |
[characters] | Any character that is a member of the set characters |
[!characters] | Any character that is not a member of the set characters |
[[:class:]] | Any character that is a member of the specified class |
So * means any characters. ? means just a single character.
Whenever we specify any characters within square brackets, this means that if any file matches any of the characters within the square brackets, it is a match.
If we want to return all files that do not have certain characters, you specify within square brackets ! followed by the characters. This will return all files that contain these prohibited characters.
At the last row of this table we have the class.
Now, there are a number of character classes in linux.
The table below lists the commonly used character classes in linux.
Character Class | Matches |
[:alnum:] | Any alphanumeric character |
[:alpha:] | Any alphabetic character |
[:digit:] | Any numeral |
[:lower:] | Any lowercase letter |
[:upper:] | Any uppercase letter |
All classes begin and end with colons (:)
The alnum class is characters that are alphanumerical.
The alpha class is characters that are alphabetical.
The digit class is characters that are numerical.
The lower class is lowercase characters.
The upper class is uppercase characters.
Lastly, we will go over examples of wildcards.
This is shown in the table below.
Pattern | Matches |
* | All files |
d* | Any file beginning with d |
c*.txt | Any file beginning with c and that ends with .txt |
dropbox??? | Any file beginning with dropbox followedy by exactly 3 characters |
[abc]* | Any file beinning with either an a, b, or c |
note[0-9] | Any file beginning with note followed by a digit of 0-9 |
note[0-9][0-9][0-9] | Any file beginning with note followed by 3 digits |
[[:upper:]] | Any file beginning with an uppercase letter |
*[[:lower:]123] | Any file ending with a lowercase letter or the numbers 1, 2, or 3 |
So these are a number of examples of wildcards.
So let's now go to the linux shell and see how this works.
The following code below finds all files that begins with d.
So the code above lists all files that begins with d.
Below is linux code that does uses various wildcard examples to
select certain files that we want.
So we first list all the files in the current working directory, so that you can see what is in there.
We then list all files that begin with the letter d, which is done by the line, ls d*
We then want to list all files that end with .php. We do this using the line, ls *.php
We then list all files that end with .html. We do this using the line, ls *.html
We then list all files that begin with note followed by a digit.
So this shows how to use wildcards in linux.
Related Resources
How to Randomly Select From or Shuffle a List in Python