Linuxを使い始めると、ファイルサイズをコマンドで確認する場面が頻繁に登場します。
サーバー管理・開発環境の構築・ログファイルの管理など、さまざまな場面でファイルやディレクトリのサイズを把握する必要があります。
Linuxにはファイルサイズを確認するためのコマンドが複数用意されており、特に「ls」コマンドと「du」コマンドが代表的です。
これらのコマンドを使いこなすことで、テキスト出力を柔軟に加工したり、大容量ファイルを自動で特定したりと、Linuxならではの強力な操作が実現します。
本記事では、lsコマンド・duコマンドの基本から応用まで、豊富なオプション例とともにわかりやすく解説します。
目次
Linuxのlsコマンドとduコマンドの役割の違い
それではまず、ファイルサイズ確認に使う代表的な二つのコマンド、lsとduの役割の違いと使い分けのポイントについて解説していきます。
lsコマンドとduコマンドの概要
lsコマンドとduコマンドはどちらもファイルサイズに関する情報を表示しますが、得意とする用途が異なります。
| コマンド | 主な用途 | ディレクトリへの対応 | 再帰的処理 |
|---|---|---|---|
| ls | ファイル一覧とメタ情報の表示 | ディレクトリ自体のサイズ(中身は含まない) | -Rオプション |
| du | ディスク使用量(実際の占有容量) | ディレクトリ内の全ファイルを合計 | デフォルトで再帰的 |
端的に言うと、個別ファイルのサイズを見るにはls、ディレクトリ全体の使用量を見るにはduが適しています。
ストレージ管理の現場では両方を組み合わせて使うことが多いです。
lsコマンドで確認できる情報
lsコマンドの詳細表示(-lオプション)では、ファイルサイズ以外にも多くの情報が確認できます。
ls -l の出力フォーマット
-rw-r–r– 1 user group 4096 Jun 1 10:30 sample.txt
①権限 ②リンク数 ③所有者 ④グループ ⑤サイズ(バイト) ⑥更新日時 ⑦ファイル名
⑤のサイズ列(バイト単位)が今回の対象
デフォルトではサイズがバイト単位で表示されますが、-hオプションを加えると人間が読みやすいKB・MB・GBで表示されます。
duコマンドで確認できる情報
duコマンドは「disk usage(ディスク使用量)」の略で、ファイルやディレクトリが実際にディスク上で占有している容量を表示します。
lsコマンドが表示するサイズはファイルデータの論理的なサイズですが、duが表示するのはファイルシステムのブロックサイズを考慮した実際の占有量です。
そのため、lsとduで同じファイルを確認すると値が若干異なることがあります。
lsコマンドの主要オプションと使い方
続いては、lsコマンドのオプションを組み合わせてファイルサイズを効率よく確認するための具体的な使い方を確認していきます。
基本オプションと人間が読みやすい単位表示
lsコマンドで最も頻繁に使われるオプションの組み合わせを紹介します。
lsコマンドの主要オプション一覧
ls -l :詳細表示(バイト単位でサイズ表示)
ls -lh :詳細表示+人間が読みやすい単位(KB・MB・GB)
ls -lha :隠しファイルも含めて詳細表示
ls -lhS :サイズの大きい順に並べ替えて表示
ls -lhSr :サイズの小さい順に並べ替えて表示(rは逆順)
ls -lht :更新日時の新しい順に並べ替えて表示
ls -lhR :サブディレクトリも含めて再帰的に表示
日常的なファイル確認には「ls -lh」が最もよく使われます。
大容量ファイルを探したいときは「ls -lhS」でサイズの大きい順に並べることで、最も大きなファイルが先頭に表示されます。
特定のファイルタイプやパターンでフィルタリング
特定の拡張子や名前パターンに合うファイルだけサイズを確認したい場合は、ワイルドカードを組み合わせます。
ワイルドカードを使ったlsコマンドの例
ls -lh *.log :カレントディレクトリ内の.logファイルのみ表示
ls -lh *.mp4 :mp4ファイルのみ表示
ls -lh /var/log/*.log :/var/logにある.logファイルを表示
ls -lhS *.jpg | head -10 :jpgファイルをサイズ降順で上位10件表示
「head -n」コマンドと組み合わせることで、上位N件だけ表示するという絞り込みが可能です。
ログファイルや一時ファイルの肥大化を確認する際に非常に役立つテクニックです。
lsコマンドの出力をgrepでフィルタリングする
lsの出力をパイプ(|)でgrepに渡すことで、特定の条件に合う行だけを表示できます。
lsとgrepを組み合わせた例
ls -lh | grep “^-“ :ファイルのみ表示(ディレクトリを除外)
ls -lh | grep “^d” :ディレクトリのみ表示
ls -lh | grep “M” :サイズ表示にMB(M)が含まれる行のみ表示
ls -lhS | grep “G” :GBサイズのファイルのみ表示
GBレベルの大容量ファイルを素早く見つけたいときに「ls -lhS | grep “G”」は非常に有用なコマンドです。
ls・grep・sort・headを組み合わせることで、Linuxのテキスト処理の強力さが発揮されます。
lsコマンドのサイズ確認で最もよく使われるのは「ls -lh」(人間が読みやすい単位で詳細表示)と「ls -lhS」(サイズ降順)の二つです。grepと組み合わせることでさらに柔軟なフィルタリングが可能になります。
duコマンドの主要オプションと使い方
続いては、ディレクトリの容量確認に特化したduコマンドの詳細な使い方を確認していきます。
duコマンドの基本構文と主要オプション
duコマンドは「du [オプション] [パス]」の形式で使用します。
オプションを指定しない場合、カレントディレクトリ以下すべてのサブディレクトリを再帰的にスキャンしてブロック単位でサイズを表示します。
duコマンドの主要オプション一覧
du -sh ディレクトリ :指定ディレクトリの合計サイズを人間が読みやすい単位で表示
du -sh * :カレントディレクトリの各項目のサイズを一覧表示
du -ah :すべてのファイルとディレクトリを一覧表示
du -h –max-depth=1 :1階層分だけ展開してサイズ表示
du -h –max-depth=2 :2階層分まで展開してサイズ表示
du -c :最後に合計サイズを表示する
「du -sh *」はカレントディレクトリにある各ファイル・ディレクトリのサイズを表示する定番コマンドで、ストレージの使用状況を素早く把握するのに最適です。
sortコマンドと組み合わせてサイズ順に並べる
duコマンドの出力はデフォルトではパス順(アルファベット順)に表示されます。
サイズの大きい順に並べるには「sort」コマンドを組み合わせます。
duとsortを組み合わせた代表的なコマンド
du -sh * | sort -rh
→カレントディレクトリの各項目をサイズ降順で表示
du -sh /home/* | sort -rh | head -10
→/homeの各ユーザーディレクトリをサイズ上位10件表示
du -ah /var/log | sort -rh | head -20
→/var/log以下のファイルをサイズ上位20件表示
「sort -rh」の「-r」は逆順(降順)、「-h」は人間が読みやすい単位(KB・MB・GBなど)を考慮してソートするオプションです。
この組み合わせはLinuxサーバーのストレージ逼迫時に最初に試すコマンドとして非常によく使われます。
ディレクトリ容量の深さを指定して確認する
「–max-depth」オプションを使うと、どの深さまで展開してサイズを表示するかを制御できます。
「du -h –max-depth=1 /」とすると、ルートディレクトリ(/)の直下の各ディレクトリのサイズが表示されます。
これはシステム全体のどの場所がストレージを多く消費しているかを大まかに把握するのに非常に役立ちます。
深さ指定でのディレクトリサイズ確認例
du -h –max-depth=1 / 2>/dev/null | sort -rh | head -15
→ルートの1階層目をサイズ降順で上位15件表示(エラー出力を抑制)
du -h –max-depth=2 /var | sort -rh | head -20
→/var以下の2階層目までをサイズ降順上位20件表示
「2>/dev/null」はエラーメッセージ(権限のないディレクトリへのアクセスエラーなど)を表示しないようにするための記述で、出力をすっきりさせることができます。
findコマンドと組み合わせた高度なファイルサイズ確認
続いては、lsやduよりさらに細かい条件指定が可能なfindコマンドを活用したファイルサイズ確認の方法を確認していきます。
findコマンドでサイズ条件を指定して検索する
findコマンドの「-size」オプションを使うと、特定のサイズ条件に合うファイルをシステム全体から検索できます。
findコマンドのサイズ条件指定の例
find / -type f -size +100M
→100MBより大きいファイルをシステム全体から検索
find /home -type f -size +50M
→/home以下で50MBより大きいファイルを検索
find /var/log -type f -size +10M -name “*.log”
→/var/log以下で10MBより大きい.logファイルを検索
find . -type f -size -1k
→カレントディレクトリ以下で1KBより小さいファイルを検索
サイズ指定では「+」が「より大きい」、「-」が「より小さい」を意味します。
単位はc(バイト)・k(キロバイト)・M(メガバイト)・G(ギガバイト)が使えます。
findの結果をlsで詳細表示する
findで検索したファイルをlsの詳細表示形式で確認したい場合は「-exec ls -lh {} \;」を組み合わせます。
findとlsを組み合わせた例
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null
→500MB以上のファイルを検索してlsの詳細表示で一覧表示
find /home -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh
→/home以下の100MB以上のファイルをサイズ順で表示
これらのコマンドはLinuxサーバーの定期的なディスク使用量チェックやクリーンアップ作業に非常に役立ちます。
crontabで定期実行するスクリプトに組み込むことで、ディスク使用量の自動監視も実現できます。
statコマンドでファイルの詳細情報を確認する
lsやduよりさらに詳細なファイル情報を確認したい場合は「stat」コマンドが使えます。
statコマンドの使い方
stat ファイル名
→ファイルの論理サイズ・ブロックサイズ・アクセス時刻・更新時刻・変更時刻・inode番号などを表示
出力例(一部):
Size: 4096(論理サイズ)
Blocks: 8(確保されたブロック数)
IO Block: 4096(ファイルシステムのブロックサイズ)
statコマンドは特にスクリプトからファイルのメタ情報を取得する際に便利で、「stat -c %s ファイル名」でバイト単位のサイズだけを出力することもできます。
まとめ
本記事では、Linuxでファイルサイズをlsコマンドとduコマンドを中心に確認する方法を詳しく解説しました。
lsコマンドは個別ファイルのサイズ確認に向いており、「ls -lh」で人間が読みやすい単位表示、「ls -lhS」でサイズ降順表示が代表的な使い方です。
duコマンドはディレクトリ全体の使用量を確認するのに適しており、「du -sh *」で一覧表示、「du -sh * | sort -rh」でサイズ順表示が定番の手法です。
findコマンドとの組み合わせでは「find / -type f -size +100M」のようにサイズ条件を指定して大容量ファイルを特定できます。
これらのコマンドを使いこなすことで、Linuxサーバーのストレージ管理や開発環境のクリーンアップが格段に効率化されます。
各コマンドの特性を理解して、用途に合わせて使い分けるようにしましょう。