這裡敘述了 Linux 系統中 ls 指令的各種用法,並蒐集了各式各樣的常用範例。
ls 是 Linux 系統上最常被使用的指令之一,通常我們開啟終端機之後,第一個會執行的指令就是 ls。我們可能幾乎天天都在使用它,但是有些參數可能還是不熟悉如何使用,以下我們介紹各種 ls 指令的用法,並且提供一些常用範例作為參考。
ls 指令基本用法
不加任何參數
直接執行 ls 帶任何參數的話,會列出目前目錄中的檔案與目錄列表。
ls

檔案詳細資訊
-l 參數可以顯示檔案與目錄的詳細資訊。
ls -l

顯示隱藏檔案
-a 參數可以顯示隱藏的檔案與目錄。
ls -a

使用易讀的格式輸出
-h 參數可以讓輸出的資訊以比較容易閱讀的格式呈現。
ls -lh

顯示檔案類型
-F 參數可以讓檔案名稱的後面加上檔案類型的標示字元。
ls -F

-F 依照檔案類型來標示的字元有以下幾種:
@:連結檔(symbolic link)。*:可執行檔(executable)。=:socket 檔。|:pipe 檔。>:door 檔。/:目錄。
反向排序檔案
-r 參數可以讓檔案的列表以反向的排序列出。
ls -r

遞迴列出所有子目錄的檔案
-R 參數可以靠遞迴的方式列出所有子目錄的檔案。
ls -R

依照時間排序檔案
若要讓檔案依照時間排序,讓最新的檔案排在最後,可以使用 -ltr:
ls -ltr
這樣的方式可以很快速的看出目錄中最新的檔案是那一些:

依照檔案大小排序
-S 可以讓檔案依照檔案的大小來排序:
ls -lS

若要方便快速找出最大的幾個檔案,可以將檔案列表以反向排序:
ls -lSr
列出 Inode
每個檔案都有一個 inode 屬性,若要列出每個檔案的 inode,可以使用 -i 參數:
ls -i

版本資訊
--version 參數可以輸出 ls 版本資訊。
ls --version

列出目錄
-d 參數可以讓 ls 只列出目錄:
ls -ld

顯示 UID 與 GID
-n 參數可以讓 ls 顯示使用者的 UID 與群組的 GID 值:
ls -n

ls 指令進階用法
自訂時間輸出格式
ls 可以允許使用者自訂輸出的時間格式,而指定時間格式的方式有兩種,一種是使用 --time-style 參數:
ls -l --time-style=full-iso

--time-style 參數所支援的選項有:
| 選項 | 說明 |
|---|---|
full-iso | 例如 2015-07-20 04:36:03.000000000 +0800。 |
long-iso | 例如 2015-07-20 04:36。 |
iso | 例如 04-15 14:23 或 2015-07-20。 |
locale | 例如 7月 20。 |
另外也可以使用 +FORMAT 這種樣板來指定時間格式,其使用方式與 date 指令所使用的樣板相同,以下是一些使用範例。
| 樣板 | 輸出範例 |
|---|---|
+%Y/%m/%d | 2016/06/12 |
+"%Y-%m-%d %H:%M" | 2016-06-12 05:59 |
+%r | 上午 11時16分28秒 |
關於樣板的使用,請參考 date 指令線上手冊(man page)。
自訂檔案輸出格式
ls 允許使用者更改預設檔案輸出的排版方式,例如改用逗點分隔的方式輸出:
ls --format=commas

以下是 --format 支援的選項:
verbose或long,等同於-l。commas,等同於-m。horizontal或across,等同於-x。vertical,等同於-C。single-column,等同於-1。
自訂排序方式
--sort 可以用來指定檔案的排序方式,例如根據檔案的副檔名排序:
ls --sort=extension

以下是 --format 支援的選項:
none:不排序,等同於-U。size:根據檔案大小排序,等同於-S。time:根據檔案時間排序,等同於-t。version:根據檔名中的版本號碼排序,等同於-v。extension:根據檔案的副檔名排序,等同於-X。
指定輸出版面寬度
--width 參數可以指定輸出的版面寬度,例如將輸出版面指定為 60 個字元寬:
ls --width=60

隱藏備份檔
Linux 上許多的文字編輯器都有自動備份的功能,在使用者更改檔案內容之後,編輯器會自動將舊的檔案內容另存一個備份檔,而備份檔的檔名即為原檔名外加一個 ~ 符號。若不想在執行 ls 時看到一大堆備份檔,可以加上 -B 參數:
ls -B

加入 -B 參數之後,所有 ~ 結尾的檔案都不會被顯示出來,可讓畫面更簡潔。
顏色輸出
--color 參數可以調整檔案輸出時是否要加上顏色,若不想加入顏色,可以執行:
ls --color=never

可用的選項有:
always:加入顏色。never:不加入顏色。auto:自動判定是否加入顏色。
在預設的情況下 ls 都會自動加入顏色(always),若設為 auto 的話,ls 只有在終端機輸出時才會加入顏色。
