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.
|
|