【ファインド】

find とは?

最終更新:
💡 開始場所と条件を決めて、ファイルを探す

Unix系環境で、指定した場所以下のファイルやディレクトリを名前・種類・更新日時などの条件で探すコマンド。ここではGNU findを例に説明する。

📌 このページのポイント
場所を指定して、条件に合うファイルを探す/projectapp.lognotes.mderror.log条件に一致app.logerror.log通常のファイルfind /project -type f -name "*.log"
/project内の通常のファイルを名前で絞る独自例。緑は一致したファイル、灰色は一致しないファイルです。矢印は探索結果を表し、表示だけで削除は行いません。
ひよこ ひよこ
findはパソコン全部を探すの?
ペンギン先生 ペンギン先生
指定した開始場所以下を探すよ。例えば . は今いるディレクトリだね。探索できる範囲は権限などにも左右される。ここで説明するのはGNU findで、他の実装では使えるオプションが異なる場合があるよ
ひよこ ひよこ
ログファイルを探す例を教えて!
ペンギン先生 ペンギン先生
`find . -type f -name "*.log" -print` なら、今いる場所以下から名前が .log で終わる通常のファイルを表示するよ。-type f が種類の条件、-name が名前の条件だね。引用符は * をシェルが先に展開するのを防ぐためだよ
ひよこ ひよこ
見つけたファイルの行数も数えられる?
ペンギン先生 ペンギン先生
`find . -type f -name "*.txt" -exec wc -l {} \;` と書けるよ。{} が対象の名前に置き換わり、wc -l を一つずつ実行する。最後の \; は実行するコマンドの終端で、省略できないんだ。{} + で複数の名前をまとめて渡す形もあるよ
ひよこ ひよこ
-mtime +7は、7日以上前という意味?
ペンギン先生 ペンギン先生
GNU findの通常の -mtime は、経過した24時間の単位を整数に切り捨てて比較するよ。+7 はその整数が7より大きいという条件なので、8×24時間以上前になる。日付や丸め方を確認し、まず表示する形で対象を確かめよう
ひよこ ひよこ
Windowsでも同じfindを使える?
ペンギン先生 ペンギン先生
Windows標準のfindは、ファイルの中にある文字列を探して該当する行を表示する別のコマンドだよ。GNU findと名前が同じでも使い方は違う。使っている環境と実装の説明を確認しよう
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「find」って出てきたら「場所と条件を指定してファイルを探すコマンド」と思えばだいたいOK!
📖 おまけ:英語の意味
「find」 = 見つける
💬 英語の「見つける」という名前だよ。Unix系環境では、ファイルの階層をたどって対象を見つけるコマンドとして使うんだ

参考資料

← 用語集にもどる