タイトル: ls ファイル/ディレクトリ一覧表示
SEOタイトル: Linux ls コマンド完全ガイド (オプション/拡張)
| この記事の要点 |
|
ls の基本
# カレントディレクトリのファイル一覧(横並び)
ls
# 詳細表示(パーミッション / 所有者 / サイズ / 更新日時)
ls -l
# 隠しファイルも表示(ドット始まり)
ls -a
ls -A # . と .. を除く隠しファイル
# 両方の合わせ技(最頻出)
ls -la
ls -lA
# 人間可読サイズ(1.5K, 234M, 3.2G)
ls -lh
# 詳細 + 人間可読 + 隠し
ls -lah
# 全展開してファイル/ディレクトリ識別記号
ls -F # / @ * = > | を末尾に付ける(ディレクトリ/シンボリックリンク等)
主要オプション一覧
| オプション | 意味 |
|---|---|
-l | long 形式(詳細) |
-a / -A | 隠しファイル表示(A は . と .. を除く) |
-h | サイズを K/M/G 単位で表示 |
-S | サイズ順(大きい順) |
-t | 更新時刻順(新しい順) |
-r | 逆順 |
-R | 再帰的にサブディレクトリも表示 |
-d | ディレクトリ自身の情報(中身ではなく) |
-i | inode 番号表示 |
-F | 種類記号付与(/ @ * = > |) |
--color=auto | 色分け表示(多くのディストロでデフォルト有効) |
-1 | 1 行 1 ファイルで出力(スクリプト向け) |
-X | 拡張子順 |
-v | バージョン番号でソート(自然順) |
--full-time | 秒まで含む時刻表示 |
-Z | SELinux コンテキスト表示 |
ls -l の出力を読む
$ ls -lh /var/log/
-rw-r--r-- 1 root syslog 12K Jun 10 08:30 auth.log
drwxr-xr-x 2 root root 4.0K Jun 1 00:00 nginx/
lrwxrwxrwx 1 root root 14 May 20 12:00 mail.log -> /var/log/mail/
^ ^ ^ ^ ^ ^ ^
| | | | | | + 名前
| | | | | + 更新日時
| | | | + サイズ
| | | + 所有グループ
| | + 所有ユーザ
| + ハードリンク数
+ 種類とパーミッション
種類:
- : 通常ファイル
d : ディレクトリ
l : シンボリックリンク
c : キャラクタデバイス
b : ブロックデバイス
s : ソケット
p : 名前付きパイプ (FIFO)
パーミッション (rwxrwxrwx):
所有者 / グループ / その他、それぞれ read / write / execute
よく使う組み合わせ
# サイズ順(大きい順)
ls -lShr # 小さい順
ls -lSh # 大きい順
# 時刻順
ls -ltr # 古い順(最新が下に)→ 編集中ログの確認に便利
ls -lt # 新しい順(最新が上)
# 拡張子順
ls -lX
# サブディレクトリ再帰
ls -R
# ディレクトリ自身の情報
ls -ld /etc
# → drwxr-xr-x 130 root root 12288 Jun 10 09:00 /etc
# 巨大ディレクトリで件数だけ知りたい
ls -1 | wc -l # ファイル数
ls -1A | wc -l # 隠し含む
シェルエイリアス
ほとんどの Linux ディストロで以下のエイリアスが初期設定されています:
# 確認
alias | grep -E "^alias ll|^alias la|^alias l="
# 典型的な設定 (~/.bashrc)
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# 色付きを強制
alias ls='ls --color=auto'
# 反映
source ~/.bashrc
モダンな代替コマンド
近年は eza(旧 exa)や lsd といった Rust 製の高機能 ls がよく使われます。Git 状態 / ファイルアイコン / ツリー表示が標準装備:
# eza(exa の後継、メンテ続行中)
sudo apt install eza # Ubuntu 24.04+
brew install eza # macOS
eza -la --git --icons # Git 状態とアイコン
eza --tree --level=2 # ツリー表示
eza -la --sort=modified -r # 時刻順
# lsd
brew install lsd
lsd -la
lsd --tree
# ls をエイリアスで置き換えるのもアリ
alias ls='eza --icons'
alias ll='eza -la --git --icons'
alias tree='eza --tree --icons'
Windows の dir / Get-ChildItem との比較
| 用途 | Linux ls | cmd dir | PowerShell |
|---|---|---|---|
| 基本表示 | ls | dir | Get-ChildItem / ls |
| 詳細 | ls -l | dir(既定) | ls \| Format-List |
| 隠し | ls -a | dir /a | ls -Force |
| 再帰 | ls -R | dir /s | ls -Recurse |
| サイズ順 | ls -lS | dir /o-s | ls \| Sort-Object Length |
困ったときのテクニック
# 巨大ディレクトリで遅い
ls -1 | head # 最初の数件だけ
\ls # alias を無効化して素の ls
# ワイルドカードがエラー(Argument list too long)
ls *.log # ❌ 大量で失敗
find . -name "*.log" # ✅ find を使う
printf '%s\n' *.log # ✅ shell builtin
# パーミッションを 8 進数で見たい
ls -l # → -rw-r--r-- だが
stat -c '%a %n' * # 644 ファイル名 で出力
# 最終アクセス時刻でソート
ls -lu # access time
ls -lc # change time (inode 変更)
FAQ
Q: 色付き表示にならない
A: alias ls='ls --color=auto' を ~/.bashrc に追加。配色は LS_COLORS 環境変数で調整。dircolors コマンドで生成可能。
Q: 日本語ファイル名で文字化けする
A: ロケール設定 LANG=ja_JP.UTF-8 を確認。locale コマンドで現在値を表示。ls -b で非印字文字をエスケープ表示。
Q: スクリプトで ls の結果をパースしたい
A: ls はパース禁止(スペース / 改行入りファイル名で壊れる)。find -print0 | xargs -0 や for f in *.txt; do ...; done を使うこと。
Q: シンボリックリンク先のディレクトリの中身を見たい
A: ls -L でリンク追跡。ls -H はコマンドラインで指定されたリンクのみ追跡。
関連
- find — 再帰的検索 + 条件フィルタ
- tree — ツリー表示専用
- du — ディレクトリ容量集計
- stat — ファイル詳細メタ情報