findコマンドは、指定されたディレクトリツリー内からファイルやディレクトリを検索するための強力なツールです。
基本構文と主要オプション
find [検索開始ディレクトリ] [オプション] [アクション]
| オプション | 説明 |
|---|---|
| -name | ファイル名を指定して検索します。ワイルドカード(*, ?など)が使えます。 |
| -type | ファイルの種類で検索します。f (通常ファイル)、d (ディレクトリ) などがあります。 |
| -size | ファイルサイズを指定して検索します。+はより大きい、-はより小さいを意味します。例: +1M (1MBより大きい) |
| -mtime | 最終更新時間で検索します。+1は1日以上前、-1は1日以内を意味します。 |
| -user | 指定したユーザーが所有するファイルを検索します。 |
| -maxdepth | 検索する階層の最大深度を指定します。1はカレントディレクトリのみ。 |
| -exec | 検索結果に対してコマンドを実行します。{}で検索結果のパスを参照し、;でコマンドの終了を示します。 |
使用例
ファイル名で検索
現在のディレクトリ以下から、report.txtという名前のファイルを検索します。
find . -name "report.txt"
複数のファイル名で検索
現在のディレクトリ以下から、.logか.txtで終わるファイルを検索します。
find . \( -name "*.log" -o -name "*.txt" \)
※ \( ... \)と-o(OR)を組み合わせることで、複数の条件を論理的に検索できます。
ディレクトリを検索
現在のディレクトリ以下から、logsという名前のディレクトリを検索します。
find . -type d -name "logs"
2日以内に更新されたファイルを検索
/var/wwwディレクトリ以下で、2日以内に最終更新されたすべてのファイルを検索します。
find /var/www -mtime -2
特定のサイズより大きいファイルを検索
現在のディレクトリ以下から、10MBより大きいファイルを検索します。
find . -size +10M
検索結果を削除
現在のディレクトリ以下から、.bakで終わるファイルを検索して削除します。
find . -name "*.bak" -exec rm {} \;
※ rmコマンドを実行する前に、find . -name "*.bak"で検索結果を確認することをお勧めします。
検索結果に対して複数のコマンドを実行
現在のディレクトリ以下から、.txtファイルを検索し、ls -lで詳細情報を表示します。
find . -name "*.txt" -exec ls -l {} \;
findコマンドは非常に柔軟で強力なため、これらのオプションやアクションを組み合わせることで、複雑な検索要件にも対応できます。
実際の使用は
こちらのサイト制作時にテキスト検索・日時フィルター・サイズフィルターをかけてファイル検索などをしています。
その他、日々の業務のファイル検索に活用しています。
1891年 ヴィクトリア朝のシャーロックホームズの世界に3名の生成AIが突如現れる。
現代社会の不可思議なビジネス課題をこの3名の生成AIが謎に迫る
- ビジネスコンテンツ × ミステリー × 生成AIの世界観をお楽しみください。
- ROI探偵事務所の事件で使用した知識をこちらに掲載しています