## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > glob

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    glob — 模様に整合するファイルの名前を返す Return names of files that match patterns
  構文 SYNOPSIS
  説明 DESCRIPTION
  OPTIONS
    -directory directory
    -join
    -nocomplain
    -path pathPrefix
    -tails
    -types typeList
    --
  GLOBBING PATTERNS
    ?
    *
    [chars]
    \x
    {a,b,...}
  WINDOWS PORTABILITY ISSUES
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

glob — 模様に整合するファイルの名前を返す Return names of files that match patterns

### 構文 SYNOPSIS

glob ?switches? ?pattern ...?

### 説明 DESCRIPTION

この命令は､Unix の csh shell 方式又は bash shell 方式に似たやり方でファイル名の “展開” を遂行する｡この命令は､名前が模様引数 pattern のどれかに合致するファイルのリストを返す｡リストの順序は如何なる保障もされない､順序を揃える必要があれば lsort を使うことが望まれる｡[訳註 -nocomplain 指示項目を指定しないと､合致対象がない時『合致はない』旨の不都合伝言文を表示し停止する｡] This command performs file name “globbing” in a fashion similar to the csh shell or bash shell. It returns a list of the files whose names match any of the pattern arguments. No particular order is guaranteed in the list, so if a sorted list is required the caller should use lsort.

#### OPTIONS

glob への最初の引数が - で始まっていると､それらは指示項目として扱われる｡次の指示項目が現在運用されている: If the initial arguments to glob start with - then they are treated as switches. The following switches are currently supported:

-directory directory
  与えれた文字列模様に合致するファイルの捜索を､与えられたディレクトリー directory 内から始める｡これにより､展開-対象文字を明示的に引用で示すことなく､その様な文字を含んでいる名前のディレクトリーの捜索ができる｡この指示項目は -path とは組み合わせできない､そちらは､その名前が､展開-対象文字を含むかもしれない､全ファイル経路の捜索を可能にするために使われる｡ 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, after option processing, are treated as a single pattern obtained by joining the arguments with directory separators.

-nocomplain
  不都合無しに空リストが返されることを許容する; Tcl 9.0の無為設定の振舞でもある､従って､この切替子は何も意味がない｡ Allows an empty list to be returned without error; This is the default behavior in Tcl 9.0, so this switch has no effect any more.

-path pathPrefix
  与えられた経路接頭辞 pathPrefix を使って､名前の残りが与えられた模様 ?pattern ...? に合致するファイルを捜索する｡之により､喩え､名前が展開対象の文字を含んでいるときでも､与えられたファイル(ディレクトリではなく)に似た名前のファイルの捜索が可能になる｡この指定項目は -directory とは組み合わせて使用できない｡譬えば､ $path と同じ根本名で､拡張子が違う全ファイルを見付けるには､ “glob -path [file rootname $path] .*” を使うのが好ましく､喩え $path が多数の展開対象文字を含んでいる場合も働く｡ 　　　　 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 extensions, you should use “glob -path [file rootname $path] .*” which will work even if $path contains numerous glob-sensitive characters.

-tails
  見付けられたそれぞれのファイルの部分であって､どれかの -directory 経路指定か -path 経路指定の中で名付けられた最後のディレクトリーに続いている箇所､のみを返す｡ そこで､ “glob -tails -directory $dir *” は “set pwd [pwd]; cd $dir; glob *; cd $pwd” と等価である｡理由は -path 指定では､返って来る名前は経路の最後の構成要素を含んでいる､従って､ “glob -tails -path [file rootname /home/fred/foo.tex] .*” は foo.aux foo.bib foo.tex 等のような経路を返す｡ 　 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 /home/fred/foo.tex] .*” will return paths like foo.aux foo.bib foo.tex etc.

-types typeList
  typeList と合致するファイル又はディレクトリーのみを列挙する､ここで､リスト内の項目には二つの形式がある｡第１の形式は､Unix のfind 命令の -type 指示項目に似ている: b (ブロック特殊ファイル), c (文字特殊ファイル), d (ディレクトリー), f (一般ファイル), l (記号連結), p (名前付きパイプ), 又は s (通信受け口)､但しリストには複数の型も指定可能である｡glob は与えられた型に一つでも合致する全てのファイルのリストを返す｡註意すべきは､記号連結は -types l が指定されているか､連結対象が要求した型に合致するか､の両方で返される｡従って､ -types d が指定されているとディレクトリーへの連結が返されることになる｡ 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 (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. 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.

  型を指定する第二の形式では､与えられる型は全て合致する必要がある｡それは､ファイルの使用権限としての r, w, x 及び､特別の権限の 読出し専用readonly と 隠し属性hidden である｡マックでは MacOS の型と創作者にも対応していて､ここで､４文字の長さの品目はどれもが､MacOS の型と仮定されている(譬えば､TEXT)｡{macintosh type XXXX} 又は {macintosh creator XXXX} の型の品目も型又は創作者にそれぞれ合致する｡識別不能の型や､MacOS 型/創作者の多重指定は不具合を発生することになる｡ 　　　　 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. Unrecognized types, or specifications of multiple macOS types/creators will signal an error.

  二つの形式は混合することもできる｡そこで､ -types {d f r w} は､読み書き両方の権限を有している全ての正規のファイルとディレクトリーを見付ける｡次のものは等価である: 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 following are equivalent:

      glob -type d *
      glob */

  但し､一番目の方は末尾の “/” を返さないし､OSに依存する度合いも低い｡ except that the first case doesn't return the trailing “/” and is more platform independent.

--
  指示項目を終了させる｡これに続く引数は縦え - で始まっても 模様 pattern として取り扱う｡ Marks the end of switches. The argument following this one will be treated as a pattern even if it starts with a -.

#### GLOBBING PATTERNS

pattern 引数は､次の特別の文字のどれでもを含み得る､それらは string match に運用されているものの上位集合になっている: The pattern arguments may contain any of the following special characters, which are a superset of those supported by string match:

?
  どのような１文字にも合致する｡ Matches any single character.

*
  零個以上のどの様な文字列にも合致する｡ Matches any sequence of zero or more characters.

[chars]
  chars の中のどの一つの文字にも合致する｡もし chars が a-b の形式の文字列を含むときは a と b の間(含両端)の何れの文字にも合致する｡ 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 charac文字 x に合致する｡ ter x.

{a,b,...}
  括弧の中の a b 等のどの部分紋様にも合致する｡ Matches any of the sub-patterns a, b, etc.

Unix上では､ csh の様に -types hidden旗標がない限り､ファイル名の先頭又は “/” 直後の “.” は明示的な合致､又は {} 構造を要する(理由は､ファイル名の先頭の “.” は隠しファイルであることを示すので)｡他のOSでは､明示的な合致を要する特別なディレクトリーの “.” と “..” を除き､ “.” で始まるファイルは､他の何れのファイルとも区別なく取り扱われる(これは “glob -join * * * *” の様な､再帰的なディレクトリーの下向きの階層構造と同じ様に適用させることによる､再帰的な模様を避ける為である)｡更に､全ての “/” 文字は､明示的な合致を要す｡ 　　　 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.

この glob 命令は､ csh の展開と２箇所が異なっている｡第１は､結果のリストの順は揃えない(揃えたリストが必要なら lsort 命令を使う)｡第２は､ glob は､実在するファイルのみの名前を返す; csh では､模様が ? か * か[] 構造 を含まない限り､ 実在するか否かは確認しない｡ 　　 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.

### WINDOWS PORTABILITY ISSUES

Windows の UNC 名前については､経路の構成要素の､集中処理装置名や共有名には ? や * や [] 構造は含んではならない｡[訳註:UNC は計算機ネット上のディレクトリー､ファイルを利用する為の名前] For Windows UNC names, the servername and sharename components of the path may not contain ?, *, or [] constructs.

逆斜線は glob 命令に対して､特別の意味があるので､Windows 式の経路区切り記号を含む glob の模様には特別の註意が必要である｡模様 “C:\\foo\\*” は “C:\foo\*” と解釈される､そこでは､ “\f” は一つの文字 “f” に合致し､ “\*” は一つの文字 “*” に合致し､何にでも合致する特殊文字とは解釈されない｡この問題に対する一つの対策は､Unix 式の順斜線を区切りとして使うことである｡Windows 式の経路は “file join $path” や “file normalize $path” 命令を使用して Unix 式に変換可能である｡ 　　　 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”.

### 用例 EXAMPLES

現在のディレクトリーの中の全てのTcl ファイルを見付ける: 　　　 Find all the Tcl files in the current directory:

    glob *.tcl

現在のディレクトリーが何であるかによらず､使用者の自宅ディレクトリー中の全てのTcl ファイルを見付ける:　　　 Find all the Tcl files in the user's home directory, irrespective of what the current directory is:

    glob -directory [file home] *.tcl

現在のディレクトリの中の全ての仔ディレクトリを捜す: 　　 Find all subdirectories of the current directory:

    glob -type d *

名前に文字 “a” か “b” か､文字の並び “cde” か､を含む全てのファイルを捜す: 　　　 Find all files whose name contains an “a”, a “b” or the sequence “cde”:

    glob -type f *{a,b,cde}*

### SEE ALSO

file

### KEYWORDS

exist, file, glob, pattern
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.