6 檔案名稱的擴展

您可能經常想用一個命令對一組文件進行操作。通配符通常用於構築一個檔案名稱的擴展模式:一系列的字符和通配符可以擴展為一系列檔案名稱。比如:模式 /etc/* 擴展為所有[*] /etc 目錄下的檔案。

* 這個通配符可以代表任何連續的字符,所以 /etc/* 將擴展為所有的以 /etc/ 開頭的檔案名稱的列表。

作為命令的一組參數,檔案名稱列表顯得最為有用。舉個例子,/etc 目錄含有一系列叫做 rc0.d、rc1.d 等子目錄。平常要看這些子目錄的內容,您要輸入:

ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d

ls /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d

這些夠枯燥的吧。替代的方法是,您可以使用 ? 這個通配符:

ls /etc/rc?.d

/etc/rc?.d 擴展為以 rc 開頭,後跟一個字符而且以 .d 結尾的一系列檔案名稱。

有效的通配符包括:

*
匹配從零個到多個所有的字符。

?
匹配單一字符。

[...]
如果您把一些字符包括在方括號�堙A結果將匹配這些字符。舉個例子,[abc] 匹配 a 或 b 或 c。如果您在左方括號加一個 ^,結果將是相反的;所以 ^abc 匹配所有非 a、非 b、非 c 的字符。您可使用一個範圍,諸如 [a-j] 匹配 a 到 j 之間的所有單一字符。這些匹配是大小寫敏感的,為了匹配任何字母,您必須使用 a-zA-Z。

當您看了一些具體例子後,擴展名模式對您就變得相當簡單了:

*.txt
這將是以 .txt 結尾的所有檔案名稱的列表,因為 * 匹配一切。

*.[hc]
這將是以 .h 或 .c 結尾的所有檔案名稱的列表。

a??
這將是以字母 a 開頭的包含三個字符的檔案名稱的列表。

[^a]??
這將是不以字母 a 開頭的所有包含三個字符的檔案名稱的列表。

a*
這將是以 a 開頭的所有的檔案名稱,而不管整個檔案名稱有幾個字符。

John Goerzen / Ossama Othman / Debian 中文計劃