Linux ls 列出檔案與目錄

ls (List) 是 Linux 中最基本也最常用的指令,用於列出指定目錄下的檔案與子目錄清單。當你登入一台 Linux 伺服器,通常第一個輸入的指令就是 ls,先看看自己身在何處,周遭有哪些檔案。

基本用法

不帶任何參數時,ls 只會列出當前目錄下的「非隱藏」檔案名稱。

ls

輸出範例:

Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

你也可以在 ls 後面接上路徑,查看特定目錄的內容:

# 查看 /var/log 目錄下的內容
ls /var/log

常用參數

只看檔名通常不夠,我們常需要知道檔案的大小、修改時間、權限等資訊。這時就需要搭配參數使用。

-l:顯示詳細資訊 (Long listing format)

這是最常用的參數。它會以列表方式顯示檔案的詳細屬性,包括權限、擁有者、群組、檔案大小、修改時間與檔名。

ls -l

輸出範例:

total 60
drwxr-xr-x 2 user user 4096 Dec 12 10:00 Desktop
drwxr-xr-x 2 user user 4096 Dec 12 10:00 Documents
-rw-r--r-- 1 user user  898 Dec 12 09:30 example.txt

-a:顯示所有檔案 (All),包含隱藏檔

在 Linux 中,檔名以點 . 開頭的檔案被視為隱藏檔(例如 .bashrc, .gitignore)。預設的 ls 不會顯示它們。使用 -a 可以看到這些檔案。

ls -a

-h:以易讀格式顯示檔案大小 (Human readable)

預設的 ls -l 顯示的檔案大小單位是 Bytes,很難直觀判斷。搭配 -h 參數,系統會自動轉換成 KB, MB, GB 等我們習慣的單位。通常會跟 -l 一起用。

ls -lh

輸出範例:

-rw-r--r-- 1 user user 1.2K Dec 12 10:15 file1.txt
-rw-r--r-- 1 user user 5.0M Dec 12 10:20 bigfile.iso

-R:遞迴列出子目錄內容 (Recursive)

如果你想一次看完目錄下所有層級的檔案(包含子目錄裡的檔案),可以使用 -R。但這可能會產生非常大量的輸出,請謹慎使用。

ls -R

-t:依修改時間排序 (Sort by time)

預設 ls 是依照檔名排序。使用 -t 會依照「修改時間」排序,最新的檔案會排在最前面。這在尋找最近被更動過的檔案時非常有用。

# 顯示詳細資訊,並依照時間排序(最新的在上面)
ls -lt

-r:反向排序 (Reverse)

將排序結果反轉。例如搭配 -t 使用變成 -ltr,就會變成「依照時間排序,最舊的在上面,最新的在下面」。這在檔案列表很長時很有用,因為最新的檔案會剛好顯示在終端機的最下方(游標處)。

# 最通用的組合技之一:詳細資料、易讀大小、依時間反向排序
ls -lhtr

常用組合技

實際工作中,我們通常會組合多個參數來達到最佳效果。

1. 顯示詳細資訊,包含隱藏檔,並轉換容量單位

ls -lah

這Probably 是工程師最常打的指令之一(有時候會設定 alias 為 ll)。

2. 顯示特定附檔名的檔案

配合 萬用字元 (Wildcard) * 使用。

# 只列出所有的 .txt 文字檔
ls *.txt

# 列出 /etc 目錄下所有以 .conf 結尾的設定檔
ls /etc/*.conf