DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

glob(n)




______________________________________________________________________________


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 currently supported:              |

       -directory direc-                                                       |
       tory                                                    |               |
              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 char- |
              acters.                                                          |

       -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 pathPre-                                                          |
       fix                                                        |            |
              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 direc- |
              tory) 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  extensions,  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 follows  the  last |
              directory  named  in any -directory or -path path specification. |
              Thus glob -tails -directory $dir *  is  equivalent  to  set  pwd |
              [pwd]  ;  cd  $dir ; glob *; cd $pwd.  For -path specifications, |
              the returned names will include the last path segment,  so  glob |
              -tails  -path  [file  rootname  ~/foo.tex] .*  will return paths |
              like foo.aux foo.bib foo.tex etc.                                |

       -types type-                                                            |
       List                                                         |          |
              Only  list  files or directories which match typeList, 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 (sym- |
              bolic 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.  Note that symbolic links |
              will be returned both if -types l is given, or if the target  of |
              a  link  matches  the requested type.  So, a link to a directory |
              will be returned if -types d was specified.                      |

              The second form specifies types where all the types  given  must |
              match.   These  are  r,  w, x as file permissions, and readonly, |
              hidden 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.  TEXT). |
              Items  which are of the form {macintosh type XXXX} or {macintosh |
              creator XXXX} will match types or creators respectively.  Unrec- |
              ognized  types,  or  specifications of multiple MacOS types/cre- |
              ators 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 per- |
              missions.  The following 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  charac-
       ters:

       ?         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 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  explic-
       itly  (this is to avoid a recursive pattern like ``glob -join * * * *''
       from recursing 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 follows 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.

       When the glob command returns relative paths whose filenames start with
       a  tilde ``~'' (for example through glob * or glob -tails, the returned
       list will not quote the tilde with ``./''.  This  means  care  must  be
       taken if those names are later to be used with file join, to avoid them
       being interpreted as absolute paths pointing to  a  given  user's  home
       directory.


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.   Otherwise,  user  account
              information  is obtained from the local computer.  On Windows 95
              and 98, glob 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  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 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 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 ``:''.


EXAMPLES

       Find all the Tcl files in the current directory:
              glob *.tcl

       Find all the Tcl files in the user's home  directory,  irrespective  of
       what the current directory is:
              glob -directory ~ *.tcl

       Find all subdirectories of the current directory:
              glob -type d *

       Find all files whose name contains an "a", a "b" or the sequence "cde":
              glob -type f *{a,b,cde}*


SEE ALSO

       file(n)


KEYWORDS

       exist, file, glob, pattern

Tcl                                   8.3                              glob(n)

Man(1) output converted with man2html