概要
ls(list segments)は、ディレクトリ内のファイルやサブディレクトリの一覧を表示する、Linuxで最も頻繁に使用されるコマンドの一つです。
単に名前を列挙するだけでなく、ファイルの詳細情報(権限、所有者、サイズ、更新日時)を確認したり、表示順序を並べ替えたり、特定のファイルを非表示にしたりと、多彩なオプションによる制御が可能です。
仕様(引数・オプション)
構文
ls [オプション] [ファイル名またはディレクトリ名]
主なオプション
表示形式やソート順を制御する主要なオプションです。
| オプション | 説明 |
| -a | . で始まる隠しファイルを含め、すべてのファイルを表示します(all)。 |
| -A | . と .. を除いたすべてのファイルを表示します(Almost all)。 |
| -l | 詳細情報(権限、所有者、サイズ、日時など)をリスト形式で表示します(long)。 |
| -1 | 1行に1ファイルずつ表示します。 |
| -F | ディレクトリなら/、実行ファイルなら*など、ファイルタイプ識別子を末尾に付加します。 |
| -h | ファイルサイズを読みやすい単位(K, M, G)で表示します(human-readable)。 |
| -t | 更新日時が新しい順に並べ替えて表示します(time)。 |
| -r | 並び順を逆にします(reverse)。 |
| -R | サブディレクトリの内容も再帰的に表示します(Recursive)。 |
| -S | ファイルサイズが大きい順に並べ替えて表示します(Size)。 |
| -i | iノード番号(ファイルの識別番号)を表示します(inode)。 |
| -m | ファイル名をカンマ(,)区切りで詰めて表示します。 |
| -g | 詳細表示から所有者を除外し、グループのみ表示します。 |
| -G | 詳細表示からグループを除外します(または、–no-group)。 |
| –hide=パターン | 指定したシェルパターンに一致するファイルを非表示にします。 |
| –color=条件 | ファイルの種類ごとに色分けします(auto, always, never)。 |
| –block-size=単位 | サイズ表示のブロック単位を指定します(例: M, G)。 |
| -c | 表示やソートの基準を「更新日時(mtime)」ではなく「ステータス変更日時(ctime)」にします。 |
基本の使い方
カレントディレクトリの内容を表示
オプションなしで実行すると、現在のディレクトリにあるファイル名のみを表示します。
ls
実行結果イメージ:
backup documents images public_html readme.txt script.sh
実践コマンド
1. 隠しファイルを含めて詳細表示する
設定ファイル(.bashrcなど)を確認する際によく使われる組み合わせです。
ls -la
実行結果イメージ:
drwxr-xr-x 5 user group 4096 Jan 15 09:00 .
drwxr-xr-x 3 root root 4096 Jan 01 00:00 ..
-rw-r--r-- 1 user group 220 Jan 01 10:00 .bash_logout
-rw-r--r-- 1 user group 3771 Jan 01 10:00 .bashrc
drwxr-xr-x 2 user group 4096 Jan 15 09:15 .cache
2. ファイルタイプ識別子を付けて1列で表示
ファイルの種類が一目で分かるように識別子(/, *, @等)を付け、スクリプト処理しやすいよう1列で出力します。
ls -F1
実行結果イメージ:
bin/
data.csv
install.sh*
lib/
logo.png
readme.txt
site_link@
3. 更新日時の古い順に表示する(ログ確認に最適)
通常は新しい順(-t)ですが、-r(逆順)を組み合わせることで、「一番下に最新のファイル」が来るようになります。ログファイルが増え続けるディレクトリで、直近の更新を確認するのに便利です。
ls -ltr
実行結果イメージ:
-rw-r--r-- 1 user group 1024 Jan 10 12:00 app.log.3
-rw-r--r-- 1 user group 2048 Jan 12 12:00 app.log.2
-rw-r--r-- 1 user group 4096 Jan 14 12:00 app.log.1
-rw-r--r-- 1 user group 8192 Jan 15 09:30 app.log
4. 特定のパターンを除外して表示
バックアップファイルや特定の中間ファイルを一覧から隠したい場合に使用します。
# 拡張子が .tmp のファイルを表示しない
ls --hide "*.tmp"
5. シンボリックリンクの実体の情報を表示する
通常、ls -l はリンク自体の情報を表示しますが、-L を付けるとリンク先(実体)の情報を表示します。
# 通常表示(リンク自体の権限などが表示される)
ls -l /usr/bin/python
# 実体参照(リンク先のバイナリのサイズや権限が表示される)
ls -lL /usr/bin/python
6. カンマ区切りで表示する
ファイル名のリストを横に詰めて、カンマ区切りで取得したい場合に利用します。
ls -m
実行結果イメージ:
app.py, config.json, static, templates, tests, venv
カスタムポイント
- エイリアスの設定:
- 毎回
ls -la --color=autoを打つのは手間なので、.bashrcなどでalias ll='ls -alF'と設定するのが一般的です。
- 毎回
- 日時のフォーマット:
--time-style=long-isoを使うと、日時がYYYY-MM-DD HH:MM形式になり見やすくなります。
注意点
- 大量のファイルがあるディレクトリ:
- 数万ファイルあるディレクトリで
lsを実行すると、表示に時間がかかりシステム負荷が上がることがあります。その場合はls -U(ソートなし)を使うと高速化します。
- 数万ファイルあるディレクトリで
- カラー表示の罠:
--color=alwaysを付けた出力をパイプでgrepなどに渡すと、色コード(エスケープシーケンス)も文字として扱われ、検索の邪魔になることがあります。パイプ処理時はlsだけにするか--color=neverを使いましょう。
- タイムスタンプの種類:
- デフォルトは更新日時(mtime)です。作成日時や権限変更日時を確認したい場合は
-cオプション等が必要です。
- デフォルトは更新日時(mtime)です。作成日時や権限変更日時を確認したい場合は
応用
ファイルサイズ順に並べて容量の大きいファイルを探す
ディスク容量が圧迫されている際、どのファイルが大きいかを即座に把握できます。
# サイズ順(-S)に並べ、単位を見やすく(-h)して詳細表示(-l)
ls -lSh
実行結果イメージ:
-rw-r--r-- 1 user group 500M Jan 15 08:00 heavy_backup.tar.gz
-rw-r--r-- 1 user group 120M Jan 14 15:00 database.dump
-rw-r--r-- 1 user group 10K Jan 15 09:00 script.py
まとめ
lsコマンドはLinux操作の基本中の基本ですが、オプションの組み合わせで調査効率が劇的に変わります。
- 向く場面: ファイルの有無確認、権限やサイズの調査、更新順の確認。
- 変更ポイント:
-h(見やすいサイズ)、-ltr(時系列ログ確認)、-A(ドット以外の隠し表示)。 - 注意点: 大量ファイル時の負荷と、エイリアス設定の確認。
特に ls -ltr は「最新のファイルを一番下に表示する」ため、作業直後の確認で非常に役立つテクニックです。
