This section summarizes the wildcards that are used for
filename expansion.
The shells use the same basic wildcards, though csh
, tcsh
,
ksh
, and bash
have some extensions.
Unless otherwise noted, assume that wildcards
are valid for all shells.
*
Match zero or more characters. For example, a*
matches the files
a
, ab
, abc
, abc.d
, and so on.
?
Match exactly one character. For example, a?
matches
aa
, ab
, ac
, etc.
[12..a..z]
Match any character listed in the brackets. For example,
a[ab]
matches aa
or ab
.
[a-z]
Match all characters between a and z. For example,
a[0-9]
matches a0
, a1
, and so on, up to a9
.
[!ab..z]
Match any character that does not
appear within the brackets.
For example, a[!0-9]
doesn't match a0
, but does match aa
.
bash
, Korn, and newer Bourne shells only.
[^ab..z]
Match any character that does not
appear within the brackets.
For example, a[^0-9]
doesn't match a0
, but does match aa
.
tcsh
only.
{word1,word2...}
Match word1
, word2
, etc.
E.g.,
a_{dog,cat,horse}
matches
the filenames a_dog
, a_cat
, and a_horse
.
bash
and C shells only.
These (9.5
)
actually aren't filename-matching wildcards.
They expand any
string, including filenames that don't exist yet,
email addresses, and more.
?(abc)
Match zero or one instance of abc
.
For example, x?(abc)x
matches xx
or xabcx
. Korn shell only.
*(abc)
Match zero or more instances of abc
.
For example, x*(abc)x
matches xx
, xabcx
, xabcabcx
, etc. Korn shell only.
+(abc)
Match one or more instances of abc
.
For example, x+(abc)x
matches xabcx
, xabcabcx
, etc. Korn shell only.
!(abc)
Match anything that doesn't contain abc
.
For example, x!(abc)x
doesn't match xabcx
or xabcabcx
, but does match
practically anything else that begins or ends with x
.
Korn shell only.
^
pat
Match any name that doesn't match pat
.
pat
must include at least one of the wildcards *
, ?
and []
.
To match all except a single name, here's a trick:
put brackets around one character.
For instance, you can match all except abc
with ^ab[c]
.
tcsh
only.
(For other shells, see
nom
(15.9
)
.)
Note: wildcards do not
match files whose names begin with a
dot (.
), like .cshrc
.
[1]
This prevents you from
deleting (or otherwise mucking around with) these files by accident.
To match those files, type the dot literally.
For example, .[a-z]*
matches anything whose name starts with a
dot and a lowercase letter.
Watch out for plain .*
, though; it matches the directory entries
.
and ..
(see article
15.5
for suggestions on solving that problem).
And a final note: many operating systems (VAX/VMS and
DOS included)
consider a file's name
and extension
to be different
entities; therefore, you can't use a single wildcard to match both.
What do I mean? Consider the file abc.def
.
Under DOS or VMS, to match
this filename you'd need the wildcard expression *.*
. The first
*
matches the name (the part before the period), and the second matches
the extension (the part after the period).
Although UNIX uses extensions, they aren't considered
a separate part of the filename, so a single *
will match the
entire name.
|
|