MENU
Language

Bashコマンド – find -ファイルやディレクトリを検索

find コマンドを使用して探す

使用例

sudo find / -name test.sh 2>/dev/null

サーバー全体から test.sh を検索します。

  • /: ルートディレクトリからすべて検索。
  • -name: 指定した名前のファイルを探す。
  • 2>/dev/null: エラーメッセージ(アクセス権限のないディレクトリなど)を非表示にする。

find コマンドは、Linux/Unix環境でファイルやディレクトリを検索するための強力なツールです。検索対象を名前、サイズ、更新時間、種類などの条件で絞り込むことができ、検索結果に対して様々な操作を行うことも可能です。

基本構文

find [検索開始ディレクトリ] [検索条件] [実行アクション]
  • 検索開始ディレクトリ:
    • 検索を開始するディレクトリを指定します。/(ルート)や.(カレントディレクトリ)などが使用されます。
  • 検索条件:
    • 名前、サイズ、更新日などで絞り込む条件を指定します。
  • 実行アクション:
    • 検索結果に対して特定の操作(例: 削除、表示など)を実行します。

よく使うオプション

1. 名前で検索(-name

指定した名前に一致するファイルまたはディレクトリを検索します。

find /path/to/search -name "filename"

部分一致の場合(ワイルドカード使用):

find /path/to/search -name "*.txt"

例: *.txt.txt で終わるすべてのファイル。

大文字小文字を区別しない場合-iname):

find /path/to/search -iname "*.txt"

2. 種類で検索(-type

特定の種類(ファイル、ディレクトリなど)を指定して検索します。

find /path/to/search -type f  # ファイルのみ
find /path/to/search -type d  # ディレクトリのみ
  • 主な種類:
    • f: ファイル
    • d: ディレクトリ
    • l: シンボリックリンク

3. サイズで検索(-size

ファイルサイズを条件に検索します。

find /path/to/search -size +10M  # 10MBより大きいファイル
find /path/to/search -size -1G   # 1GBより小さいファイル
  • 単位:
    • k: キロバイト(1024バイト)
    • M: メガバイト
    • G: ギガバイト
  • 記号:
    • +: 条件より大きい
    • -: 条件より小さい

4. 更新時間で検索(-mtime / -atime / -ctime

ファイルの更新日時やアクセス日時を条件に検索します。

-mtime: 最終更新日からの日数

find /path/to/search -mtime -7  # 過去7日以内に更新されたファイル
find /path/to/search -mtime +30 # 30日以上前に更新されたファイル

-atime: 最終アクセス日

find /path/to/search -atime -1  # 過去1日以内にアクセスされたファイル

-ctime: ファイルの属性が変更された日

find /path/to/search -ctime +10 # 10日以上前に変更されたファイル

5. ユーザーで検索(-user / -group

特定の所有者またはグループに属するファイルを検索します。

find /path/to/search -user username
find /path/to/search -group groupname

6. パーミッションで検索(-perm

特定のパーミッションを持つファイルやディレクトリを検索します。

find /path/to/search -perm 644   # 正確に644のパーミッションを持つ
find /path/to/search -perm -755 # 少なくとも755のパーミッションを持つ

検索結果に対するアクション

1. 結果の表示(デフォルト動作)

特にアクションを指定しない場合、find は結果を標準出力に表示します。

2. 削除(-delete

検索結果のファイルを削除します。

find /path/to/search -name "*.tmp" -delete

3. 他のコマンドと連携(-exec

検索結果に対して指定したコマンドを実行します。

例: ファイルの詳細を確認:

find /path/to/search -name "*.log" -exec ls -lh {} \;

{}: 検索結果のファイルを指す。

\;: コマンドの終了を表す。

例: ファイルを圧縮:

find /path/to/search -name "*.log" -exec gzip {} \;

よくある使い方の例

1. 特定の名前のファイルを検索

find / -name "test.sh"

2. 特定の拡張子のファイルを検索

find /var/log -name "*.log"

3. 1日以内に更新されたファイルを検索

find /home/user -mtime -1

4. サイズが1GB以上のファイルを検索

find / -size +1G

5. 特定のパーミッションを持つファイルを削除

find /tmp -perm 777 -delete

注意事項

権限エラーを無視:

すべてのファイルにアクセスできない場合、エラーを非表示にします。

find / -name "filename" 2>/dev/null

削除時の注意:

-delete を使用する場合は、条件を慎重に確認してください。

まとめ

find コマンドは、Linux/Unix環境で効率的にファイルやディレクトリを検索し、さらに操作まで行える便利なツールです。簡単な使い方から複雑な条件付き検索まで幅広く対応できるため、システム管理やデバッグ作業で頻繁に活用されます。

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

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次