符號 * 就代表任意的檔案名。但是
ls *的結果和
ls並不相同。因為 ls * 遇到檔案夾的時候, 會列出它裡面的檔案,而不是列出檔案夾本身的資料。例如
用指令a.ps Bookmarks mean ndc fortran: 102.f a.f temp.f Mail: bcc sentout shawn nsmail:
ls -d *可以看到所有的檔案,包括資料夾在內,而不會列出資料夾裡面的檔案。 而且,
ls -ad *可以將隱藏檔以及隱藏資料夾,都列出來。
我們可以將 * 符號配合其他字符,達到選擇的目的。例如
ls -d .*會列出所有隱藏檔和隱藏資料夾,不列出其他檔案。例如
ls *.txt會列出所有名字之後四個字元為 .txt 的檔案。 我們不應該將 txt 視為副檔名,因為在 UNIX 裡面其實沒有副檔名這個概念。 再例如
ls t*t會列出所有名字的第一個字元和最後一個字元都是 t 的檔案。
這個 * 符號還可以用在路徑名稱中。例如
ls */*.tex會列出所有子資料夾中以 .tex 結尾的檔案, 但是不會列出目前的資料夾中以 .tex 結尾的檔案,如下
nsc/repost.tex zeng/cbobo.tex zeng/one.tex stability/a.tex zeng/cele.tex
另外一個常用的選擇方法是 [] 符號。[az] 表示 a 或 z, 而 [m-q] 表示從 m 到 q 的六個字母。例如
ls -d .[A-Z]*列出所有名字以大寫英文字母開頭的隱藏檔。而
ls *[ds]*列出所有名字中含有 d 或是含有 s 的檔案。 注意,* 也可以代表空字串,所以例如 d2b.c 和 gsview.ps 都會被列出來。
習題