findコマンドでファイルを検索する方法

当ページのリンクには広告が含まれています。

## はじめに

`find` コマンドはLinuxでファイルやディレクトリを条件指定して検索するコマンドです。ファイル名・拡張子・更新日時・サイズ・パーミッションなど多様な条件を組み合わせて絞り込みができ、サーバー管理において不可欠なツールです。

単純なファイル名検索から、特定期間に更新されたファイルの一括操作まで、`find` の使い方をマスターすることでサーバー運用の効率が大幅に向上します。本記事では基本から実践的な活用方法まで体系的に解説します。

## 症状・背景

`find` コマンドが必要になる主な場面:

– 特定のファイル名やパターンに一致するファイルを探したい
– 古いログや一定期間アクセスのないファイルを見つけて削除したい
– 特定の拡張子のファイルを一括で処理したい
– パーミッションが間違っているファイルを検索したい
– 大容量ファイルを探してディスク空きを確保したい

[図解画像をここに表示]

## 手順・設定方法

### ステップ1: 基本的なファイル検索

“`bash
# ファイル名で検索
find . -name “config.conf”

# 大文字小文字を区別しない検索(-iname)
find . -iname “*.log”

# ルートから全体を検索
find / -name “nginx.conf” 2>/dev/null

# ディレクトリのみ検索(-type d)
find /var -type d -name “cache”

# ファイルのみ検索(-type f)
find /etc -type f -name “*.conf”
“`

### ステップ2: 日時・サイズでの検索

“`bash
# 7日以内に更新されたファイル(-mtime)
find /var/log -mtime -7 -type f

# 30日以上前に更新されたファイル
find /var/log -mtime +30 -type f

# 1時間以内に変更されたファイル(-mmin)
find /tmp -mmin -60 -type f

# 100MB以上のファイルを検索(-size)
find / -size +100M -type f 2>/dev/null

# 空のファイルを検索
find /tmp -size 0 -type f

# 空のディレクトリを検索
find /var -empty -type d
“`

### ステップ3: 検索結果への操作(-exec / xargs)

“`bash
# 見つかったファイルを詳細表示(-exec ls)
find /etc -name “*.conf” -exec ls -la {} \;

# 30日以上前のログを削除
find /var/log -name “*.log” -mtime +30 -exec rm {} \;

# 見つかったファイルをアーカイブに移動
find /tmp -mtime +7 -type f -exec mv {} /tmp/archive/ \;

# xargsと組み合わせて高速処理(大量ファイルに有効)
find /var/log -name “*.log” -mtime +30 | xargs rm -f

# ファイル内容をgrepで検索(findとgrepの組み合わせ)
find /etc -name “*.conf” | xargs grep -l “ServerName”

# パーミッション777のファイルを検索・修正
find /var/www -perm 777 -type f | xargs chmod 644
“`

### ステップ4: 高度な検索条件の組み合わせ

“`bash
# 複数条件のAND(-a): 7日以上前かつつ【0MB以上
find /var/log -mtime +7 -size +10M -type f

# 複数条件のOR(-o): .logまたは.tmp
find /tmp \( -name “*.log” -o -name “*.tmp” \) -type f

# 条件のNOT(!または-not): .confを除く
find /etc -not -name “*.conf” -type f

# 特定ディレクトリを除外(-prune)
find / -path /proc -prune -o -name “*.conf” -print 2>/dev/null

# 深さを制限(-maxdepth)
find /etc -maxdepth 2 -name “*.conf”

# 所有者で検索(-user)
find /home -user apache -type f

# パーミッションで検索(-perm)
find /etc -perm -o+w -type f # 他ユーザーが書き込み可能なファイル
“`

## 注意事項

– `find /` の全体検索は `/proc` や `/sys` を巻き込んで遅くなるため、`2>/dev/null` でエラーを抑制するか `-path /proc -prune` で除外する
– `-exec rm {} \;` のような削除操作は、事前に `-exec echo {} \;` で対象ファイルを確認してから実行する
– `xargs` を使う場合、ファイル名にスペースが含まれると誤動作する。`find -print0 | xargs -0` で対処する
– `find` は検索開始ディレクトリのパーミッションに依存するため、`root` 権限なしでシステム全体を検索する場合は一部スキップされる

## まとめ

1. **基本検索**: `find /path -name “pattern”` でファイル名・拡張子検索
2. **日時検索**: `find -mtime -7` で7日以内の更新ファイルを検索
3. **サイズ検索**: `find -size +100M` で大容量ファイルを検索
4. **一括操作**: `find … -exec command {} \;` で検索結果に処理を適用
5. **複合条件**: `-a`(AND)、`-o`(OR)、`!`(NOT)で複雑な絞り込み

関連記事:
– [rmコマンドでファイル・ディレクトリを削除する方法](../0704-linux-rm-command/)
– [lsコマンドでファイルを一覧表示する方法](../0701-linux-ls-command/)
– [grepコマンドでファイルの内容を検索する方法](../0706-linux-grep-command/)

▼ 実践ガイド

【2026年】ネット証券口座の選び方とおすすめ比較 →

用語の意味がわかったら、実際の口座選びのポイントもチェックしてみてください。

※本記事に掲載している情報は、中立的な立場からの情報提供を目的としたものです。掲載している商品・サービスの購入や利用を推奨・強制するものではありません。投資には価格変動リスクが伴い、元本割れが生じる可能性があります。過去の運用実績やシュミレーション結果は、将来の運用成果を保証するものではありません。また、情報の正確性・最新性には十分配慮しておりますが、 内容の完全性や将来の結果を保証するものではありません。最終的な投資判断は、読者ご自身の判断と責任において行っていただくようお願いいたします。本記事の情報を利用したことによって生じたいかなる損害についても、当サイトでは一切の責任を負いかねますので、あらかじめご了承ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

マネジ局長は、「お金の大辞典」全体を統括する監修者です。

編集者であるマネ辞くんが収集・整理した金融・投資・税制データについて、制度の前提条件やリスク、誤解が生じやすい点がないかをチェックし、「この情報をどう受け取るべきか」という判断軸を補足します。

特定の商品やサービスをすすめる役割ではなく、読者が冷静に考えるためのブレーキ役として設計されています。

お金の判断は急がず、理解してから選ぶ。
それがマネ辞局長の基本スタンスです。

目次