「大きいファイルだけを一覧表示して、不要なものを削除したい」
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
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 -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
・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
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
・-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
・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
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/
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ファイルサイズが大きい順に表示 | 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・MIMEでエンコードされたテキストを読めるように変換する
・viエディタで文字をコピーする
・ハードディスクの使用状況を調べるには
・tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
・tar.gz形式のファイルを解凍、展開するには
