ls(list)是 Linux 列出目錄內容的核心指令,參數極其豐富,涵蓋顯示格式、排序方式、時間戳記、權限資訊、色彩標示等多維度控制。本文系統整理超過 50 個常用參數分類說明,並提供實戰範例與輸出欄位解析,助你精準掌握目錄瀏覽與資訊擷取技巧。

指令語法與核心功能
ls [選項]... [目錄/檔案]...
無參數預設: 當前目錄下非隱藏檔案,直行顯示,按字母排序。
參數分類速查表(50+ 參數)
顯示範圍控制
| 參數 | 長參數 | 功能 |
| -a | --all | 顯示所有檔案(含以 . 開頭的隱藏檔) |
| -A | --almost-all | 同 -a 但不列出 . 與 .. |
| -d | --directory | 列出目錄本身而非其內容 |
| -L | --dereference | 顯示符號連結指向的目標資訊 |
| -H | --dereference-command-line | 命令列參數為符號連結時跟隨目標 |
輸出格式與資訊豐富度
| 參數 | 長參數 | 功能 |
| -l | | 長格式:權限、連結數、擁有者、群組、大小、時間、名稱 |
| -h | --human-readable | 搭配 -l:大小以 K/M/G 易讀單位顯示 |
| --si | | 同 -h 但用 1000 為底(而非 1024) |
| -i | --inode | 顯示 inode 號碼 |
| -n | | 同 -l 但用 UID/GID 數字而非名稱 |
| -g | | 同 -l 但不列出擁有者 |
| -G | --no-group | 不列出群組資訊 |
| -o | | 同 -l 但不列出群組(保留擁有者) |
| -F | --classify | 檔案類型後綴:/=目錄, *=執行檔, @=符號連結, |=FIFO |
| -p | --file-type | 同 -F 但不標示執行檔 * |
| --color[=WHEN] | | 控制色彩:never/always/auto |
排序與順序控制
| 參數 | 長參數 | 功能 |
| -t | | 按修改時間新舊排序(最新在前) |
| -r | --reverse | 反轉排序順序 |
| -S | | 按檔案大小排序(最大在前) |
| -X | | 按副檔名排序 |
| -v | | 自然版本號排序(1, 2, 10, 1.1) |
| -c | | 搭配 -lt:按 ctime 排序/顯示;搭配 -l:顯示 ctime 但按名稱排序 |
| -u | | 搭配 -lt:按 atime 排序/顯示;搭配 -l:顯示 atime 但按名稱排序 |
| -U | | 不排序,依檔案系統原始順序 |
| --sort=WORD | | 指定排序鍵:size, time, version, extension, none |
遞迴與特殊處理
| 參數 | 長參數 | 功能 |
| -R | --recursive | 遞迴列出所有子目錄 |
| -f | | 不排序、啟用 -aU、停用 -lst |
| -1 | | 每行僅一個檔案 |
| -m | | 以逗號分隔填滿行寬 |
| -x | | 逐行而非逐欄顯示 |
| -C | | 逐欄顯示(終端機預設) |
| -w | --width=COLS | 指定螢幕寬度 |
| -T | --tabsize=COLS | 指定 Tab 寬度 |
| -I | --ignore=樣式 | 排除符合 shell 樣式的項目 |
| -b | --escape | 以 C 風格跳脫字元顯示不可列印字元 |
長格式(-l)輸出欄位詳細解析
-rw-r--r-- 1 user group 4096 Oct 25 14:30 file.txt
│││││││ │ │ │ │ │ │
││││││└───┘ │ │ │ │ │ └─ 檔案名
│││││└───────┘ │ │ │ └────────── 修改時間(mtime)
││││└───────────┘ │ └────────────── 檔案大小(位元組)
│││└──────────────────┘ └────────────── 群組名
││└───────────────────────────────────────── 擁有者
│└────────────────────────────────────────── 硬連結數
└─────────────────────────────────────────── 檔案類型與權限
第1字元:-=一般檔, d=目錄, l=符號連結, b=區塊裝置, c=字元裝置, p=FIFO, s=Socket
後9字元:rwx 三組分別為 owner/group/other
實戰範例精選
範例一:系統管理常用組合
# 詳細資訊+人類可讀大小+顯示隱藏檔+分類標示
ls -lhAF
# 依修改時間倒序(最新在前)、長格式
ls -ltr
# 依大小排序找出大檔案
ls -lSh
# 遞迴列出完整目錄樹(大目錄慎用)
ls -lR /etc | head -50
範例二:尋找特定檔案模式
# 列出所有 .log 檔案
ls -l *.log
# 忽略大小寫(需 shopt -s nocaseglob)
ls -l *.LOG
# 排除特定模式
ls -I '*.tmp' -I '*.bak'
範例三:腳本解析友善輸出
# 每行一項、顯示 inode、不解析符號連結
ls -1i
# 以 Null 字元分隔(配合 xargs -0 / read -d '')
ls -1 | tr '\n' '\0'
常見問題與技巧
| 需求 | 解決方案 |
| 色彩不顯示 | ls --color=always 或檢查 LS_COLORS 環境變數、alias ls='ls --color=auto' |
| 檔名含空格/特殊字元 | ls -b 跳脫顯示、ls -Q 雙引號包裹 |
| 大量檔案效能 | ls -f 停用排序、ls -U 檔案系統原序 |
| 顯示完整時間戳記 | ls -l --time-style=full-iso 或 stat |
| 只列出目錄 | ls -d */ 或 find . -maxdepth 1 -type d |
現代替代工具推薦
- exa / eza: 現代化替代品,預設 Git 整合、樹狀檢視、更佳色彩、預設人類可讀大小
- lsd: Rust 實作,圖示豐富、Git 狀態、樹狀檢視
- tree: 專注樹狀結構顯示,
tree -L 2 -h
深入掌握 ls 的參數組合與輸出解析,能讓目錄巡檢、異常排查、腳本資料擷取等工作精準高效。建議先熟練核心 10-15 個高頻參數,再根據具體需求查閱進階選項。