UNIX 檔案系統教材:選擇性地列出檔案目錄

符號 * 就代表任意的檔案名。但是

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 都會被列出來。

習題

[BCC16-A]
單維彰 (2000/10/19) ---
[Prev] [Next] [Up]