「ログファイルが溜まりすぎていないか、数で確認したい」
「サブディレクトリも含めて、ファイル数の全体像を把握したい」
サーバー運用では、ディレクトリ内のファイル数を確認する場面が頻繁にあります。ログのローテーション確認、バックアップの検証、ディスク容量調査の前段階など、用途はさまざまです。
この記事では、Linuxでディレクトリ内のファイル数をカウントする方法を、目的別に解説します。基本の
ls | wc -l から、find を使った再帰的カウント、特定の拡張子だけを数える方法、さらにディレクトリごとの内訳表示まで網羅します。・ls + wc -lでディレクトリ内のファイル数をカウントする方法
・findコマンドでサブディレクトリも含めて再帰的にカウントする方法
・特定の拡張子のファイルだけを数える方法
・ディレクトリごとにファイル数を内訳表示する方法
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ファイル数カウントの基本(ls + wc)
最もシンプルな方法は、ls の出力行数を wc -l で数えることです。1. カレントディレクトリのファイル数を数える
# カレントディレクトリのファイル・ディレクトリ数を表示 ls | wc -l
ls はファイル名を1行ずつ出力し、wc -l がその行数を数えます。ただし、この方法には注意点があります。・隠しファイルは含まれない:
ls は「.」で始まるファイルを表示しない・ディレクトリも1件としてカウントされる:ファイルだけを数えたい場合は不正確
・サブディレクトリ内は含まれない:直下の1階層だけが対象
2. 隠しファイルも含めてカウントする
-A オプションを付けると、.(カレント)と ..(親ディレクトリ)を除いた隠しファイルも表示されます。# 隠しファイルも含めてカウント(. と .. は除外) ls -A | wc -l
.bashrc や .bash_profile などの隠しファイルもカウントしたい場合は、必ず -A を付けてください。ファイルだけ・ディレクトリだけを数える(find + wc)
ls ではファイルとディレクトリが混在してカウントされます。種類を区別して数えるには find コマンドを使います。1. ファイル数だけをカウントする
# 指定ディレクトリ配下のファイル数を再帰的にカウント find /var/log -type f | wc -l
-type f でファイルのみを検索対象にします。サブディレクトリ内のファイルも含めて再帰的にカウントされます。2. ディレクトリ数だけをカウントする
# 指定ディレクトリ配下のディレクトリ数をカウント find /var/log -type d | wc -l
-type d でディレクトリのみを検索します。起点ディレクトリ自身も1件に含まれる点に注意してください。起点を除きたい場合は -mindepth 1 を追加します。# 起点ディレクトリ自身を除外してカウント find /var/log -mindepth 1 -type d | wc -l
3. 直下の1階層だけをカウントする(サブディレクトリを除外)
find はデフォルトでサブディレクトリも再帰的に検索します。直下だけに限定したい場合は -maxdepth 1 を指定します。# 直下のファイル数だけをカウント(サブディレクトリ内は含めない) find /var/log -maxdepth 1 -type f | wc -l
特定の条件でファイル数をカウントする
実務では「ログファイルだけ」「今日更新されたファイルだけ」など、条件を絞ってカウントしたい場面が多くあります。1. 特定の拡張子のファイル数を数える
# .log ファイルの数をカウント find /var/log -type f -name "*.log" | wc -l # .conf ファイルの数をカウント find /etc -type f -name "*.conf" | wc -l
2. 特定のサイズ以上のファイル数を数える
# 100MB以上のファイル数をカウント find / -type f -size +100M | wc -l
3. 最近更新されたファイル数を数える
# 過去24時間以内に更新されたファイル数 find /var/log -type f -mtime 0 | wc -l # 過去7日以内に更新されたファイル数 find /var/log -type f -mtime -7 | wc -l
-mtime 0 は「今日(24時間以内)」、-mtime -7 は「7日以内」を意味します。4. 空ファイルの数を数える
# 空ファイル(0バイト)の数をカウント find /home -type f -empty | wc -l
ディレクトリごとのファイル数を表示する
「どのディレクトリにファイルが集中しているか」を把握したい場合の方法です。1. 各サブディレクトリのファイル数を一覧表示する
# /var/log 配下の各ディレクトリのファイル数を表示 for dir in /var/log/*/; do echo "$(find "$dir" -type f | wc -l) $dir" done | sort -rn
152 /var/log/audit/ 48 /var/log/httpd/ 23 /var/log/sa/ 12 /var/log/tuned/
sort -rn でファイル数が多い順に並び替えます。ログの溜まり具合を一目で確認できます。2. ツリー形式でファイル数を表示する(treeコマンド)
tree コマンドがインストールされていれば、ディレクトリ構造とファイル数を同時に確認できます。# ディレクトリの階層構造とファイル数を表示 tree /var/log --du -h # treeがない場合はインストール yum install tree # または dnf install tree
tree の最終行にディレクトリ数とファイル数の合計が表示されます。実務で使えるファイル数カウントのTips
ファイル名にスペースや改行が含まれる場合
find | wc -l はファイル名に改行文字が含まれていると正確にカウントできません。厳密にカウントしたい場合は、-printf を使います。# ファイル名に改行が含まれていても正確にカウント find /home -type f -printf '.' | wc -c
-printf '.' はファイル1件につきドットを1つ出力し、wc -c でその文字数(=ファイル数)を数えます。ファイル名の中身に左右されないため確実です。通常のサーバー運用でファイル名に改行を含むケースはまずありませんが、不特定のユーザーがファイルをアップロードする環境では覚えておくと安心です。
Permission denied が大量に出る場合
権限のないディレクトリを検索すると「Permission denied」が大量に表示されます。エラーを非表示にしてカウントだけ取得するには、標準エラー出力を捨てます。# エラーメッセージを非表示にしてカウント find / -type f -name "*.log" 2>/dev/null | wc -l
2>/dev/null で標準エラー出力を破棄します。ただし、エラーが出たディレクトリのファイルはカウントされない点は理解しておいてください。正確にカウントしたい場合は sudo を付けて実行します。大量のファイルがあるディレクトリでの注意
数十万ファイルを超えるディレクトリでは、ls の実行自体に時間がかかります。ls はファイル名をソートしてから出力するためです。ソート不要でカウントだけしたい場合は find を使ってください。find はソートせずに順次出力するため、大量ファイルでも効率的です。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 直下のファイル・ディレクトリ数を数える | ls | wc -l |
| 隠しファイルも含めて数える | ls -A | wc -l |
| ファイルだけを再帰的に数える | find パス -type f | wc -l |
| ディレクトリだけを数える | find パス -type d | wc -l |
| 直下のファイルだけを数える | find パス -maxdepth 1 -type f | wc -l |
| 特定の拡張子のファイルを数える | find パス -type f -name "*.log" | wc -l |
| 100MB以上のファイルを数える | find パス -type f -size +100M | wc -l |
| 過去24時間以内に更新されたファイルを数える | find パス -type f -mtime 0 | wc -l |
| 空ファイルを数える | find パス -type f -empty | wc -l |
| エラーを非表示にしてカウント | find パス -type f 2>/dev/null | wc -l |
Linuxのファイル操作コマンドを体系的に学びませんか?
ls・find・wcの組み合わせは、サーバー運用で頻繁に使う基本パターンです。この仕組みを理解しておくと、応用の幅が大きく広がります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:表形式でテキストファイルの内容を表示する方法|columnコマンドの使い方と-tオプション解説
- 前のページへ:修正時刻が新しい順にファイルを表示する方法|ls -tオプションと実務での使い方
- この記事の属するカテゴリ:Linuxtips・ディレクトリ・ファイル操作へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます