「ディスク容量を圧迫している巨大なファイルを探し出したい」
Linuxサーバーの運用保守で、毎日必ずと言っていいほど直面するシチュエーションです。
この記事では、
ls コマンドを使ってファイルやディレクトリの一覧を並び替える(ソートする)方法を解説します。単なるアルファベット順ではなく、現場のエンジニアが息をするように使っている「時間順」や「サイズ順」など、実務直結のオプションをまとめました。
1. 更新日時の「時間順」にソートする(-t / -rt)
障害調査などで最新のエラーログを確認する際、最もよく使われるのが時間順のソートです。新しい順(降順)に並べる: -t
-t(time)オプションを付けると、タイムスタンプ(更新日時)が新しいファイルが上に、古いファイルが下に並びます。通常は詳細表示の -l と組み合わせて -lt として使います。# ls -lt -rw-r--r-- 1 root root 1024 2月 24 10:00 access.log ←一番新しい -rw-r--r-- 1 root root 2048 2月 23 15:30 error.log -rw-r--r-- 1 root root 4096 2月 22 09:15 system.log ←一番古い
【現場の鉄則】古い順に並べて最新を一番下に出す: -rt
-t オプションには弱点があります。ファイルが数百個ある場合、一番新しいファイルが画面の上に流れていってしまい、いちいちスクロールして戻らなければなりません。そこで、逆順にする
-r(reverse) オプションを組み合わせます。# ls -lrt -rw-r--r-- 1 root root 4096 2月 22 09:15 system.log ←一番古い -rw-r--r-- 1 root root 2048 2月 23 15:30 error.log -rw-r--r-- 1 root root 1024 2月 24 10:00 access.log ←一番新しい(画面の一番下)
ls -lrt と打つことで、プロンプトのすぐ上に最新ファイルが表示されるため、現場ではこちらを使うのが圧倒的な定番です。隠しファイル(ドットファイル)も含めてソートする: -a との組み合わせ
.bashrc や .ssh などの隠しファイル(ドットファイル)も対象に含めたい場合は、-a(all)を追加します。隠しファイルも含めて更新日時の古い順に並べる場合は下記の通り実行します。
# ls -lrta
2. ファイルの「サイズ順」にソートする(-S)
「ディスク容量が100%になってしまったので、巨大なファイルを特定したい」という時に活躍するのが-S(大文字のエス)オプションです。大きい順(降順)に並べる: -S
サイズ順に並べる場合も、人が見て分かりやすいように-h(human-readable:KやMなどの単位をつける)オプションと組み合わせるのが実務の基本です。# ls -lhS -rw-r--r-- 1 root root 1.5G 2月 24 10:00 database.dump ←一番大きい -rw-r--r-- 1 root root 500M 2月 23 15:30 backup.zip -rw-r--r-- 1 root root 12K 2月 22 09:15 config.txt ←一番小さい
ls -lhSr と -r を追加します。3. 拡張子ごとにソートする(-X)
同じディレクトリに.html、.php、.jpg などが混在している場合、拡張子ごとにまとめて表示させるとスッキリします。この場合は -X(大文字のエックス)を使います。# ls -lX -rw-r--r-- 1 root root 120 2月 24 10:00 index.html -rw-r--r-- 1 root root 1024 2月 24 10:00 data.txt -rw-r--r-- 1 root root 200 2月 24 10:00 login.php -rw-r--r-- 1 root root 300 2月 24 10:00 main.php
-x は「行ごとに横に並べて表示する」という全く別のオプションなので注意してください。※
-X および次の -v はLinux(GNU ls)固有のオプションです。macOSのターミナルなど、BSD系の環境では使用できませんのでご注意ください。4. 数字(バージョン)順にソートする(-v)
通常のアルファベット順ソートでは、file1.txt、file10.txt、file2.txt のように、数字の「10」が「2」より先に来てしまい不自然になります。これを人間が見て自然な数字順(バージョン順)に並び替えるのが
-v オプションです。# ls -lv -rw-r--r-- 1 root root 100 2月 24 10:00 file1.txt -rw-r--r-- 1 root root 200 2月 24 10:00 file2.txt -rw-r--r-- 1 root root 300 2月 24 10:00 file10.txt
本記事のまとめ(ソートオプション早見表)
| やりたいこと | コマンド例 |
|---|---|
| 更新日時が新しい順に並べる | ls -lt |
| 更新日時が古い順に並べる(最新が一番下) | ls -lrt |
| 隠しファイルも含めて時間順に並べる | ls -lrta |
| ファイルサイズが大きい順に並べる | ls -lhS |
| ファイルサイズが小さい順に並べる | ls -lhSr |
| 拡張子ごとにまとめて並べる(Linux専用) | ls -lX |
| 数字(バージョン)順に自然に並べる(Linux専用) | ls -lv |
ログの調査やコマンド操作で、無駄な時間を過ごしていませんか?
便利なコマンドやオプションを知らないままサーバーを運用していると、本来1分で終わるはずの調査に何時間もかかってしまい、深刻な障害対応に遅れをとってしまいます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・tarコマンドで作成したアーカイブの内容を表示する
・Linuxでファイルコンテンツの検索をする
・tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
・BZIP2形式でファイルを圧縮・解凍するには
・GZIP形式の圧縮ファイルを解凍する
