Wildcards powerful feature in many languages where they have some special meaning while giving some command
i.e In html * is selector which selects all things *{}
Similarly in SQL database queries it selects all content according to command and in the same way it have some specific meaning in linux shells. Common wild cards with description is as fallows
i.e In html * is selector which selects all things *{}
Similarly in SQL database queries it selects all content according to command and in the same way it have some specific meaning in linux shells. Common wild cards with description is as fallows
Wildcard | Matches |
* | zero or more characters |
? | exactly one character |
[abcde] | exactly one character listed |
[a-e] | exactly one character in the given range |
[!abcde] | any character that is not listed |
[!a-e] | any character that is not in the given range |
{debian,linux} | exactly one entire word in the options given |
< Wildcard examples >
Let's have a few examples. Probably the * character is already familiar to you, because it's widely used in many other places, too, not just in Linux. For example, the following removes every file from the current directory:
$ rm *
The following command moves all the HTML files, that have the word "linux" in their names, from the working directory into a directory named
dir1
:$ mv *linux*.html dir1
See, I told you that moving multiple files can be just as simple as moving only one file!
The following displays all files that begin with
d
and end with .txt
:$ less d*.txt
The following command removes all files whose names begin with
junk.
, followed by exactly three characters:$ rm junk.???
With this command you list all files or directories whose names begin with
hda
, followed by exactly one numeral:$ ls hda[0-9]
This lists all files or directories beginning with
hda
, followed by exactly two numerals:$ ls hda[0-9][0-9]
The following lists all files or directories whose name starts with either
hd
or sd
, followed by any single character between a
and c
:$ ls {hd,sd}[a-c]
This command copies all files, that begin with an uppercase letter, to directory
dir2
:$ cp [A-Z]* dir2
This deletes all files that don't end with
c
, e
, h
or g
:$ rm *[!cehg]
I could continue on and on with these examples, but you get the idea. You can use simple patterns or combine different wildcards and construct very complex patterns, and like I said before, you can use them with any commands that accept file names as arguments.