glob.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:9k
- '"
- '" Copyright (c) 1993 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: glob.n,v 1.12.2.1 2004/10/27 12:52:40 dkf Exp $
- '"
- .so man.macros
- .TH glob n 8.3 Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- glob - Return names of files that match patterns
- .SH SYNOPSIS
- fBglob fR?fIswitchesfR? fIpattern fR?fIpattern ...fR?
- .BE
- .SH DESCRIPTION
- .PP
- This command performs file name ``globbing'' in a fashion similar to
- the csh shell. It returns a list of the files whose names match any
- of the fIpatternfR arguments.
- .LP
- If the initial arguments to fBglobfR start with fB-fR then
- they are treated as switches. The following switches are
- currently supported:
- .VS 8.3
- .TP
- fB-directoryfR fIdirectoryfR
- Search for files which match the given patterns starting in the given
- fIdirectoryfR. This allows searching of directories whose name
- contains glob-sensitive characters without the need to quote such
- characters explicitly. This option may not be used in conjunction with
- fB-pathfR, which is used to allow searching for complete file paths
- whose names may contain glob-sensitive characters.
- .TP
- fB-joinfR
- The remaining pattern arguments are treated as a single pattern
- obtained by joining the arguments with directory separators.
- .VE 8.3
- .TP
- fB-nocomplainfR
- Allows an empty list to be returned without error; without this
- switch an error is returned if the result list would be empty.
- .VS 8.3
- .TP
- fB-pathfR fIpathPrefixfR
- Search for files with the given fIpathPrefixfR where the rest of the name
- matches the given patterns. This allows searching for files with names
- similar to a given file (as opposed to a directory) even when the names
- contain glob-sensitive
- characters. This option may not be used in conjunction with
- fB-directoryfR. For example, to find all files with the same root name
- as $path, but differing extensions, you should use fBglob
- -path [file rootname $path] .*fR which will work even if $path contains
- numerous glob-sensitive characters.
- .TP
- fB-tailsfR
- Only return the part of each file found which follows the last directory
- named in any fB-directoryfR or fB-pathfR path specification.
- Thus fBglob -tails -directory $dir *fR is equivalent to
- fBset pwd [pwd] ; cd $dir ; glob *; cd $pwdfR. For
- fB-pathfR specifications, the returned names will include the last
- path segment, so fBglob -tails -path [file rootname ~/foo.tex] .*fR
- will return paths like fBfoo.aux foo.bib foo.texfR etc.
- .TP
- fB-typesfR fItypeListfR
- Only list files or directories which match fItypeListfR, where the items
- in the list have two forms. The first form is like the -type option of
- the Unix find command:
- fIbfR (block special file),
- fIcfR (character special file),
- fIdfR (directory),
- fIffR (plain file),
- fIlfR (symbolic link),
- fIpfR (named pipe),
- or fIsfR (socket), where multiple types may be specified in the list.
- fBGlobfR will return all files which match at least one of the types given.
- Note that symbolic links will be returned both if fB-types lfR is given,
- or if the target of a link matches the requested type. So, a link to
- a directory will be returned if fB-types dfR was specified.
- .RS
- .PP
- The second form specifies types where all the types given must match.
- These are fIrfR, fIwfR, fIxfR as file permissions, and
- fIreadonlyfR, fIhiddenfR as special permission cases. On the
- Macintosh, MacOS types and creators are also supported, where any item
- which is four characters long is assumed to be a MacOS type
- (e.g. fBTEXTfR). Items which are of the form fI{macintosh type XXXX}fR
- or fI{macintosh creator XXXX}fR will match types or creators
- respectively. Unrecognized types, or specifications of multiple MacOS
- types/creators will signal an error.
- .PP
- The two forms may be mixed, so fB-types {d f r w}fR will find all
- regular files OR directories that have both read AND write permissions.
- The following are equivalent:
- .RS
- .CS
- fBglob -type d *fR
- fBglob */fR
- .CE
- .RE
- except that the first case doesn't return the trailing ``/'' and
- is more platform independent.
- .RE
- .VE 8.3
- .TP
- fB-|-fR
- Marks the end of switches. The argument following this one will
- be treated as a fIpatternfR even if it starts with a fB-fR.
- .PP
- The fIpatternfR arguments may contain any of the following
- special characters:
- .TP 10
- fB?fR
- Matches any single character.
- .TP 10
- fB*fR
- Matches any sequence of zero or more characters.
- .TP 10
- fB[fIcharsfB]fR
- Matches any single character in fIcharsfR. If fIcharsfR
- contains a sequence of the form fIafB-fIbfR then any
- character between fIafR and fIbfR (inclusive) will match.
- .TP 10
- fBefIxfR
- Matches the character fIxfR.
- .TP 10
- fB{fIafB,fIbfB,fI...fR}
- Matches any of the strings fIafR, fIbfR, etc.
- .LP
- On Unix, as with csh, a ``.'' at the beginning of a file's name or just
- after a ``/'' must be matched explicitly or with a {} construct,
- unless the ``-types hidden'' flag is given (since ``.'' at the beginning
- of a file's name indicates that it is hidden). On other platforms,
- files beginning with a ``.'' are handled no differently to any others,
- except the special directories ``.'' and ``..'' which must be matched
- explicitly (this is to avoid a recursive pattern like ``glob -join * *
- * *'' from recursing up the directory hierarchy as well as down).
- In addition, all ``/'' characters must be matched explicitly.
- .LP
- If the first character in a fIpatternfR is ``~'' then it refers
- to the home directory for the user whose name follows the ``~''.
- If the ``~'' is followed immediately by ``/'' then the value of
- the HOME environment variable is used.
- .LP
- The fBglobfR command differs from csh globbing in two ways.
- First, it does not sort its result list (use the fBlsortfR
- command if you want the list sorted).
- Second, fBglobfR only returns the names of files that actually
- exist; in csh no check for existence is made unless a pattern
- contains a ?, *, or [] construct.
- .LP
- When the fBglobfR command returns relative paths whose filenames
- start with a tilde ``~'' (for example through fBglob *fR or
- fBglob -tailsfR, the returned list will not quote the tilde with
- ``./''. This means care must be taken if those names are later to
- be used with fBfile joinfR, to avoid them being interpreted as
- absolute paths pointing to a given user's home directory.
- .SH "PORTABILITY ISSUES"
- .PP
- Unlike other Tcl commands that will accept both network and native
- style names (see the fBfilenamefR manual entry for details on how
- native and network names are specified), the fBglobfR command only
- accepts native names.
- .TP
- fBWindowsfR
- .
- For Windows UNC names, the servername and sharename components of the path
- may not contain ?, *, or [] constructs. On Windows NT, if fIpatternfR is
- of the form ``fB~fIusernamefB@fIdomainfR'' it refers to the home
- directory of the user whose account information resides on the specified NT
- domain server. Otherwise, user account information is obtained from
- the local computer. On Windows 95 and 98, fBglobfR accepts patterns
- like ``.../'' and ``..../'' for successively higher up parent directories.
- .
- Since the backslash character has a special meaning to the glob
- command, glob patterns containing Windows style path separators need
- special care. The pattern fIC:eefooee*fR is interpreted as
- fIC:efooe*fR where fIeffR will match the single character fIffR
- and fIe*fR will match the single character fI*fR and will not be
- interpreted as a wildcard character. One solution to this problem is
- to use the Unix style forward slash as a path separator. Windows style
- paths can be converted to Unix style paths with the command fBfile
- join $pathfR (or fBfile normalize $pathfR in Tcl 8.4).
- .TP
- fBMacintoshfR
- .
- When using the options, fB-directoryfR, fB-joinfR or fB-pathfR, glob
- assumes the directory separator for the entire pattern is the standard
- ``:''. When not using these options, glob examines each pattern argument
- and uses ``/'' unless the pattern contains a ``:''.
- .SH EXAMPLES
- Find all the Tcl files in the current directory:
- .CS
- fBglobfR *.tcl
- .CE
- .PP
- Find all the Tcl files in the user's home directory, irrespective of
- what the current directory is:
- .CS
- fBglobfR -directory ~ *.tcl
- .CE
- .PP
- Find all subdirectories of the current directory:
- .CS
- fBglobfR -type d *
- .CE
- .PP
- Find all files whose name contains an "a", a "b" or the sequence "cde":
- .CS
- fBglobfR -type f *{a,b,cde}*
- .CE
- .SH "SEE ALSO"
- file(n)
- .SH KEYWORDS
- exist, file, glob, pattern