NAME
       glob - Return names of files that match patterns

SYNOPSIS
       glob ?switches? pattern ?pattern ...?


DESCRIPTION
       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 pattern arguments.

       If  the  initial  arguments to glob start with - then they
       are treated as switches.  The following switches are  cur-
       rently supported:

       -directory directory
              Search  for  files  which  match the given patterns
              starting  in  the  given  directory.   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 -path, which is used  to  allow
              searching  for  complete file paths whose names may
              contain glob-sensitive characters.

       -join  The remaining pattern arguments are  treated  as  a
              single  pattern  obtained  by joining the arguments
              with directory separators.

       -nocomplain
              Allows an empty list to be returned without  error;
              without  this  switch  an  error is returned if the
              result list would be empty.

       -path pathPrefix
              Search for files with the  given  pathPrefix  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
              -directory.  For example, to find  all  files  with
              the  same  root name as $path, but differing exten-
              sions, you should use  glob  -path  [file  rootname
              $path]  .*  which  will work even if $path contains
              numerous glob-sensitive characters.

       -tails Only return the part of each file found which  fol-
              lows  the last directory named in any -directory or
              -path path specification.  Thus glob -tails -direc-
              tory  $dir  *  is  equivalent to set pwd [pwd] ; cd
              $dir ; glob *; cd $pwd.  For -path  specifications,
              the  returned names will include the last path seg-
              ment,  so  glob   -tails   -path   [file   rootname
              ~/foo.tex]  .*   will  return  paths  like  foo.aux
              foo.bib foo.tex etc.

       -types typeList
              Only list files or directories  which  match  type-
              List,  where  the items in the list have two forms.
              The first form is like the -type option of the Unix
              find  command: b (block special file), c (character
              special file), d (directory),  f  (plain  file),  l
              (symbolic  link),  p  (named  pipe), or s (socket),
              where multiple types may be specified in the  list.
              Glob will return all files which match at least one
              of the types given.

              The second form specifies types where all the types
              given  must  match.  These are r, w, x as file per-
              missions, and readonly, hidden as  special  permis-
              sion cases.  On the Macintosh, MacOS types and cre-
              ators are also supported, where any item  which  is
              four  characters long is assumed to be a MacOS type
              (e.g. TEXT).  Items which are of the  form  {macin-
              tosh  type  XXXX}  or {macintosh creator XXXX} will
              match types or creators respectively.  Unrecognized
              types,   or   specifications   of   multiple  MacOS
              types/creators will signal an error.

              The two forms may be mixed, so -types  {d  f  r  w}
              will  find  all  regular  files OR directories that
              have both read AND write permissions.  The  follow-
              ing are equivalent:
                             glob -type d *
                             glob */
              except  that  the  first  case  doesn't  return the
              trailing ``/'' and is more platform independent.

       --     Marks the end of switches.  The argument  following
              this  one  will  be treated as a pattern even if it
              starts with a -.

       The pattern arguments may contain  any  of  the  following
       special characters:

       ?         Matches any single character.

       *         Matches any sequence of zero or more characters.

       [chars]   Matches any single character in chars.  If chars
                 contains  a  sequence  of  the form a-b then any
                 character  between  a  and  b  (inclusive)  will
                 match.

       \x        Matches the character x.

       {a,b,...} Matches any of the strings a, b, etc.

       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 indi-
       cates  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 recurs-
       ing up the directory hierarchy as well as down).  In addi-
       tion, all ``/'' characters must be matched explicitly.

       If  the  first  character  in  a  pattern is ``~'' then it
       refers to the home directory for the user whose name  fol-
       lows  the  ``~''.  If the ``~'' is followed immediately by
       ``/'' then the value of the HOME environment  variable  is
       used.

       The  glob  command  differs from csh globbing in two ways.
       First, it does not sort its result  list  (use  the  lsort
       command  if  you want the list sorted).  Second, glob only
       returns the names of files that actually exist;  in csh no
       check for existence is made unless a pattern contains a ?,
       *, or [] construct.


PORTABILITY ISSUES
       Unlike other Tcl commands that will  accept  both  network
       and  native style names (see the filename manual entry for
       details on how native and network  names  are  specified),
       the glob command only accepts native names.

       Windows
              For Windows UNC names, the servername and sharename
              components of the path may not contain ?, *, or  []
              constructs.   On  Windows  NT, if pattern is of the
              form ``~username@domain'' it  refers  to  the  home
              directory  of  the  user  whose account information
              resides on the specified NT domain server.   Other-
              wise, user account information is obtained from the
              local computer.  On Windows 95 and 98, glob accepts
              patterns  like  ``.../''  and ``..../'' for succes-
              sively higher up parent directories.

              Since the backslash character has a special meaning
              to  the glob command, glob patterns containing Win-
              dows style path separators need special  care.  The
              pattern C:\\foo\\* is interpreted as C:\foo\* where
              \f will match the single character f  and  \*  will
              match the single character * and will not be inter-
              preted 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 file
              join $path (or file normalize $path in Tcl 8.4).

       Macintosh
              When using the options, -directory, -join or -path,
              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 ``:''.


SEE ALSO
       file(n)


KEYWORDS
