Arch manual pages

glob(3tcl) Tcl Built-In Commands glob(3tcl)


glob - 返回匹配模式的文件名

glob ?switches? pattern ?pattern ...?

這個命令用與 csh shell 類似的方式進行文件名的“通配符匹配”。它返回文件名匹配 pattern (模式)參數中的所有文件的一個列表。

如果給 glob 的初始參數以 - 開始,則它們將被作爲選項來對待。當前支持下列選項開關:

-directory directory
在這個給定的 directory (目錄)中開始查找匹配給定模式的文件。這允許查找名字中包含通配符敏感字符的目錄而不需要顯式的引用這些字符。這個選項不能與-path 聯合使用。
-join
把通過剩餘的模式參數用目錄分隔符連接起來作爲一個單一的模式來對待。
-nocomplain
允許返回一個空列表而不是返回一個錯誤;要是沒有這個開關的話,如果結果列表爲空則返回一個錯誤。
-path pathPrefix
查找有給定的 pathPrefix (路徑前綴)的文件,名字中餘下的部分匹配給定模式。這個選項允許查找與一個給定文件有類似的名字的文件,包括名字中包含通配符敏感的字符的情況。這個選項不能與-directory 聯合使用。
-types typeList
只列出匹配 typeList (類型列表)的文件或目錄,在這個列表中的元素有兩種形式。第一種形式類似 Unix find 命令的 -type 選項: b (塊特殊文件 block special file), c (字符特殊文件 character special file), d (目錄 directory), f (單純文件 plain file), l (符號連接 symbolic link), p (命名管道 named pipe), or s (套接口 socket), 在這個列表中可以指定多個類型。Glob 返回至少匹配一個類型的所有文件。

對於第二種形式指定的類型,所有給出的類型都必須匹配。它們是作爲文件權限的 rwx和作爲特殊權限的實例的 readonlyhidden。在 Macintosh 上,還支持 MacOS 類型和建立者,假定任何四個字符長的項目都是一個 MacOS 類型(例如 TEXT)。有{macintosh type XXXX}{macintosh creator XXXX} 形式的項目將分別的匹配類型或建立者。不可識別的類型,或多個 MacOS 類型/建立者指定將導致錯誤。

以混合兩種類型,所以 -types {d f r w} 將找到有讀寫權限的正規文件目錄。下列命令等價:

glob -type d *
glob */
但第一種情況不返回尾部的 ``/'' 並且更加不依賴平臺。
--
標誌着選項的結束。此後的參數即使以 - 開始仍將被作爲pattern 對待。

pattern 參數可以包含任意下列特殊字符:

?
匹配任何單一字符。
*
匹配零個或多個字符的任何序列。
[chars]
匹配在 chars 中的任何單一字符。如果 chars 包含 a-b 形式的一個序列則匹配在 ab 之間(包括它們在內)的任何字符。
\x
匹配字符 x
{a,b,...}
匹配字符串 ab 等中的任何一個。

與 csh 一樣, 在一個文件的名字的開始處或緊隨“/”之後的那個“.”必須被顯式的(explicit)匹配或與一個 {} 構造(construct)相匹配。額外的,所有“/”字符必須顯式的匹配。

如果在一個 pattern中的第一個是“~”,則它參照一個用戶的主目錄,這個用戶的名字緊隨在“~”之後。如果 “~”的後面緊隨着一個“/”,則使用 HOME 環境變量的值。

glob與 csh globbing 在兩個方面有區別。首先,它不排序它的結果列表(如果你想排序的話使用 lsort 命令)。其次,glob 只返回實際存在的文件的名字;在 csh 中除非一個模式包含一個 ?、*、或 [] 構造,否則不檢查文件是否存在。

不象其他 Tcl 命令那樣接受網絡和本地式樣的兩種名字(關於如何指定本地和網絡名字的詳情參見 filename手冊條目),而 glob 命令只接受本地名字。

Windows
對於 Windows UNC 名字,路徑組成部分中的服務器名和共享名不能包含?、*、或 [] 構造。在 Windows NT 上,如果 pattern 有 ``~username@domain'' 的形式,則它參照一個用戶的主目錄,這個用戶的帳號信息駐留在指定 NT 域控制器上。否則,從本地計算機獲取用戶帳號信息。在 Windows 95 和 98 上,glob 接受象“.../” 和 “..../”這樣的模式,用於連續的更上層的父目錄。

Macintosh
在使用了選項 -dir-join-path 的時候,glob 假定給整個模式的目錄分隔符是標準的“:”。在不使用這些選項的時候,glob 檢查每個模式參數,除非這個模式包含一個“:”,否則使用“/”。

file(n)

exist, file, glob, pattern

寒蟬退士

2001/09/03

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
8.3 Tcl