Linuxでファイルサイズが大きい順に表示するコマンド|ls -lSやdu・findの実践例


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディレクトリ・ファイル操作 > Linuxでファイルサイズが大きい順に表示するコマンド|ls -lSやdu・findの実践例
「ディスク容量がいっぱいで、どのファイルが原因か分からない」
「大きいファイルだけを一覧表示して、不要なものを削除したい」

Linuxサーバーを運用していると、ディスク容量の逼迫は避けて通れない問題です。原因となっている巨大ファイルをすばやく特定できるかどうかで、対処のスピードが大きく変わります。

この記事では、lsコマンドでファイルサイズが大きい順に表示する方法をはじめ、duコマンドでディレクトリごとの容量を調べる方法、findコマンドで特定サイズ以上のファイルだけを検索する方法まで、現場で使える実践テクニックを解説します。

ls -lSでファイルサイズが大きい順に表示する(基本)

ファイルサイズ順に並べる最も基本的な方法が、lsコマンドの-Sオプション(大文字のS)です。-l(詳細表示)と組み合わせて使います。

$ ls -lS /var/log/ 合計 52428 -rw-r--r-- 1 root root 28311552 3月 8 10:00 messages -rw-r--r-- 1 root root 15728640 3月 8 09:30 secure -rw-r--r-- 1 root root 5242880 3月 7 23:59 maillog -rw-r--r-- 1 root root 1048576 3月 5 12:00 cron -rw-r--r-- 1 root root 524288 3月 1 08:00 boot.log

ファイルサイズが大きいものが上に、小さいものが下に表示されます。/var/logなどのログディレクトリで「何が容量を食っているか」をすぐに把握できます。

ls -lShで人間が読みやすいサイズ表示にする

-Sオプションだけだとサイズがバイト単位の数字で表示されるため、桁が多くなると直感的にわかりにくくなります。-h(human-readable)オプションを追加すると、KB・MB・GBの単位で表示されます。

$ ls -lSh /var/log/ 合計 52M -rw-r--r-- 1 root root 27M 3月 8 10:00 messages -rw-r--r-- 1 root root 15M 3月 8 09:30 secure -rw-r--r-- 1 root root 5.0M 3月 7 23:59 maillog -rw-r--r-- 1 root root 1.0M 3月 5 12:00 cron -rw-r--r-- 1 root root 512K 3月 1 08:00 boot.log

現場では ls -lSh が最も実用的です。サイズの大小が一目でわかります。

ls -lSrで小さい順(昇順)に表示する

-r(reverse)オプションを追加すると、ファイルサイズが小さい順に並びます。

$ ls -lSrh /var/log/ 合計 52M -rw-r--r-- 1 root root 512K 3月 1 08:00 boot.log -rw-r--r-- 1 root root 1.0M 3月 5 12:00 cron -rw-r--r-- 1 root root 5.0M 3月 7 23:59 maillog -rw-r--r-- 1 root root 15M 3月 8 09:30 secure -rw-r--r-- 1 root root 27M 3月 8 10:00 messages

ファイル数が多いディレクトリでは、一番大きいファイルが画面の最下部(プロンプトの直前)に表示されるため、スクロールせずに確認できて便利です。

duコマンドでディレクトリごとの容量を調べる

lsコマンドはファイル単体のサイズを表示しますが、「どのディレクトリが容量を食っているか」を調べるにはduコマンドを使います。

1. 特定ディレクトリの直下を容量順で表示する

du -shと--max-depthを組み合わせて、ディレクトリごとの合計サイズを表示し、sortコマンドで大きい順に並べます。

$ du -sh /var/* | sort -rh 1.2G /var/log 856M /var/cache 324M /var/lib 12M /var/spool 4.0K /var/tmp

du -sh:各ディレクトリの合計サイズを人間が読める形式で表示
sort -rh:人間が読める単位(K/M/G)を認識して大きい順にソート

2. ディスク全体でどこが容量を使っているか調べる

ルートディレクトリから調べることで、ディスク全体の容量配分が一目でわかります。

# du -sh /* 2>/dev/null | sort -rh | head -10 4.2G /var 2.1G /usr 1.5G /home 856M /opt 324M /boot 12M /etc 8.0K /tmp 4.0K /root

※2>/dev/nullを付けることで、アクセス権限がないディレクトリのエラーメッセージを非表示にしています。

3. サブディレクトリも含めて容量の大きい順に表示する

--max-depthオプションで深さを指定すると、サブディレクトリの内訳まで確認できます。

# du -h --max-depth=2 /var | sort -rh | head -10 4.2G /var 1.2G /var/log 856M /var/cache 620M /var/cache/yum 324M /var/lib 280M /var/lib/rpm 156M /var/log/audit 12M /var/spool

findコマンドで指定サイズ以上のファイルを検索する

「100MB以上のファイルだけを探したい」といった場合は、findコマンドの-sizeオプションが最適です。

1. 指定サイズ以上のファイルを検索する

# find / -type f -size +100M 2>/dev/null /var/log/messages-20260301 /var/cache/yum/x86_64/packages/kernel-5.14.0.rpm /home/user1/backup.tar.gz

-type f:ファイルのみ(ディレクトリは除外)
-size +100M:100MBより大きいファイル

サイズの指定方法は以下のとおりです。

+100M:100MBより大きい
+1G:1GBより大きい
-10k:10KBより小さい

2. サイズ順にソートして表示する

findの結果にファイルサイズも表示し、大きい順に並べるには、-printfオプションとsortを組み合わせます。

# find / -type f -size +50M -printf '%s %p\n' 2>/dev/null | sort -rn | head -10

-printf '%s %p\n':サイズ(バイト)とパスを表示
sort -rn:数値として大きい順にソート

3. 人間が読みやすい形式で表示する

findの結果をls -lhに渡すことで、サイズをMB/GB表示にできます。

# find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh -rw-r--r-- 1 root root 1.2G 3月 1 10:00 /var/log/messages-20260301 -rw-r--r-- 1 root root 620M 2月 28 09:00 /var/cache/yum/x86_64/packages/kernel-5.14.0.rpm -rw-r--r-- 1 root root 150M 3月 5 14:30 /home/user1/backup.tar.gz

実務Tips:ディスク容量が逼迫した時の調査手順

サーバーのディスク容量が足りなくなった時、以下の手順で原因を特定できます。

1. まずdfでどのパーティションが逼迫しているか確認する

$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 47G 3.0G 94% / /dev/sda2 100G 12G 88G 12% /home

Use%が90%を超えているパーティションが問題のあるパーティションです。

2. duで容量を食っているディレクトリを絞り込む

# du -sh /* 2>/dev/null | sort -rh | head -5

3. findで巨大ファイルを特定する

# find /var -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh

4. ls -lShで該当ディレクトリの中身を確認して対処する

# ls -lSh /var/log/

この「df → du → find → ls」の流れが、ディスク容量調査の定番の手順です。

本記事のまとめ

やりたいこと コマンド
ファイルサイズが大きい順に表示 ls -lSh ディレクトリ
ファイルサイズが小さい順に表示 ls -lSrh ディレクトリ
ディレクトリごとの容量を大きい順に表示 du -sh /var/* | sort -rh
サブディレクトリの内訳も含めて表示 du -h --max-depth=2 /var | sort -rh
100MB以上のファイルを検索 find / -type f -size +100M
巨大ファイルをサイズ順で一覧表示 find / -type f -size +50M -printf '%s %p\n' | sort -rn
ディスク使用率の確認 df -h

ディスク管理やログ管理を体系的に学びたいですか?

ディスク容量の管理はLinuxサーバー運用の基本中の基本です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・MIMEでエンコードされたテキストを読めるように変換する
・viエディタで文字をコピーする
・ハードディスクの使用状況を調べるには
・tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
・tar.gz形式のファイルを解凍、展開するには

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る