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

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > Linuxでファイルサイズが大きい順に表示するコマンド|ls -lSやdu・findの実践例
「ディスク容量がいっぱいで、どのファイルが原因か分からない」
「大きいファイルだけを一覧表示して、不要なものを削除したい」

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

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

【この記事でわかること】
・ls -lSでファイルサイズが大きい順に表示する方法
・duコマンドでディレクトリごとの容量を調べる方法
・findコマンドで指定サイズ以上のファイルを検索する方法
・ディスク容量逼迫時の調査手順(df→du→find→lsの流れ)

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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\t/var/log 856M\t/var/cache 324M\t/var/lib 12M\t/var/spool 4.0K\t/var/tmp

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

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

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

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

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

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

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

# du -h --max-depth=2 /var | sort -rh | head -10 4.2G\t/var 1.2G\t/var/log 856M\t/var/cache 620M\t/var/cache/yum 324M\t/var/lib 280M\t/var/lib/rpm 156M\t/var/log/audit 12M\t/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\ ' 2>/dev/null | sort -rn | head -10

-printf '%s %p\ ':サイズ(バイト)とパスを表示
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\ ' | sort -rn
ディスク使用率の確認 df -h

Linuxのディスク管理を体系的にマスターしたい方へ

ディスク容量の逼迫はサーバー障害の原因になります。ls・du・findの使い方を覚えることで、問題を素早く特定できるようになります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

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

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

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

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

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。