[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page
Top Document: Unix - Frequently Asked Questions (2/7) [Frequent posting]
Previous Document: How do I tell inside .cshrc if I'm a login shell?
Next Document: How do I find the last argument in a Bourne shell script?
-
Search the FAQ Archives
Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page
Top Document: Unix - Frequently Asked Questions (2/7) [Frequent posting]
Previous Document: How do I tell inside .cshrc if I'm a login shell?
Next Document: How do I find the last argument in a Bourne shell script?
How do I construct a ... matches all files except "." and ".." ?
2.11) How do I construct a shell glob-pattern that matches all files
except "." and ".." ?
You'd think this would be easy.
* Matches all files that don't begin with a ".";
.* Matches all files that do begin with a ".", but
this includes the special entries "." and "..",
which often you don't want;
.[!.]* (Newer shells only; some shells use a "^" instead of
the "!"; POSIX shells must accept the "!", but may
accept a "^" as well; all portable applications shall
not use an unquoted "^" immediately following the "[")
Matches all files that begin with a "." and are
followed by a non-"."; unfortunately this will miss
"..foo";
.??* Matches files that begin with a "." and which are
at least 3 characters long. This neatly avoids
"." and "..", but also misses ".a" .
So to match all files except "." and ".." safely you have to use
3 patterns (if you don't have filenames like ".a" you can leave
out the first):
.[!.]* .??* *
Alternatively you could employ an external program or two and use
backquote substitution. This is pretty good:
`ls -a | sed -e '/^\.$/d' -e '/^\.\.$/d'`
(or `ls -A` in some Unix versions)
but even it will mess up on files with newlines, IFS characters
or wildcards in their names.
In ksh, you can use: .!(.|) *
Top Document: Unix - Frequently Asked Questions (2/7) [Frequent posting]
Previous Document: How do I tell inside .cshrc if I'm a login shell?
Next Document: How do I find the last argument in a Bourne shell script?
Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page
[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Send corrections/additions to the FAQ Maintainer:
tmatimar@isgtec.com (Ted Timar)
Last Update October 22 2009 @ 05:35 AM