使い方
- 起点パス、名前パターン、種別、更新日時、サイズなどの条件を入力すると find コマンドが自動生成される。
- 必要な条件だけ入力すればよい(空欄の項目は無視される)。
- 最後に -exec・-delete・xargs などの後段アクションを選ぶと実行用コマンドまで組み上がる。
- 「コマンドをコピー」で生成結果をそのまま貼り付けて実行できる。
仕組み・計算式
find(1) の仕様通り、条件(テスト)を左から順に並べて論理積(AND)で評価する構文を組み立てている。-mtime n は最終更新から n*24 時間の経過を判定するが、経過時間を24時間単位で切り捨てて比較するため、-mtime +7 は実際には8日以上前に更新されたファイルを指す(find(1) の -mtime の項に明記)。-size は n[ckMG](c=バイト、k=KiB、M=MiB、G=GiB)で +/- により大小を指定する。-perm mode は完全一致、-perm -mode は指定ビットを全て含む、-perm /mode は指定ビットのいずれかを含む場合にマッチする。
現場の落とし穴:-delete は「一致したら削除して真を返す」テスト兼アクションのため、式の途中に置くと find が左から評価する過程でそこに到達した時点で即座に削除され、後ろに書いた -name などの条件は削除を止める役に立たない。まず -delete を外して一致対象を確認してから最後に追加するのが安全。素のパイプ出力ではなく -print0 | xargs -0 を使えば、スペースを含むファイル名でも単語分割で壊れない。
よくある質問
Q. GNU find と macOS(BSD)find で同じコマンドが使えますか?
A. -name・-type・-mtime・-size・-delete などの基本的なテストは共通だが、-printf や -regextype は GNU findutils 独自で BSD find には無い。
Q. -maxdepth はどこに置くべきですか?
A. 探索の深さを制御するグローバルオプションのため、find(1) は他のテストより前(起点パスの直後)に置くことを推奨しており、このツールも自動でその位置に生成する。
Q. -exec の {} + と {} \; はどちらを使うべきですか?
A. {} \; は1件ごとにコマンドを起動し確実だが遅く、{} + はまとめて1回の呼び出しに渡すため高速(xargs に近い)。対象が多い場合は {} + が有利。
関連ツール
最終更新・根拠の確認日: 2026-09-10 · カテゴリ: Linux・サーバー