當你在使用命令列時,有很多時間都用來尋找你所需要的檔案。Shell提供了一套完整的字串模式比對規則,或者稱之為元字元,這樣你就可以按照所要求的模式來匹配檔案。還可以使用字元類型來匹配檔案名稱。在命令列方式下,使用元字元更為快捷。一下列出幾種用於檔案名稱置換的方法。
1、使用*
使用星號*可以匹配檔案名稱中的任何字串。
(1)在下面的例子中,我們給出檔案名稱模式app*,它的意思是檔案名稱以app開頭,後面可以跟隨任何字串,包括Null 字元串:
$ ls app*
appdva applsd appui
appl
(2)*也可以用在檔案名稱模式的開頭,在下面的例子中, * . d o c匹配所有以. d o c結尾的檔案名稱:
$ ls *.doc
1.doc 2.doc dfs.doc
(3)在使用c d命令切換路徑時,使用星號還可以省去輸入整個路徑名的麻煩,下面給出一個這樣的例子:
$ pwd
$ /etc
$ ls -l |grep ^d
……
$ cd cron.w*
$ pwd
$ /etc/cron.wdf
2、使用?
使用可以匹配檔案名稱中的任何單個字元。在下面的例子中,我們列出檔案名稱以任意兩個字元開頭,接著是R,後面跟任何字元的檔案:
(1)在下面的例子中,我們列出檔案名稱以conf開頭、中間是任意兩個字元、最後以.log結尾的檔案:
$ ls conf.??.log
(2) 在下面的例子中, f??*s匹配所有以f開頭、中間是任意兩個字元、後面跟隨任一字元串、並以s結尾的檔案名稱:
$ ls f??*s
3、使用[…][!…]
使用[…]可以用來匹配方括弧[ ]中的任何字元。在這一方法中,還可以使用一個橫杠-來串連兩個字母或數字,以此來表示一個範圍。在下面的例子中,列出了以i或o開頭的檔案名稱:
$ ls [io]*
$ inetd.ds odsf.txt
為了匹配所有以log.開頭、後面跟隨一個數字、然後可以是任一字元串的檔案名稱,可以用log.[0-9]*,其中[0-9]表示任意單個數字,星號*代表了其他字元:
$ ls log.[0-9]*
4、總結
使用元字元可以大大減少你在尋找檔案名稱上的工作量。這是一種非常有效模式比對方法