🐧 Linux 総合学習プラットフォーム
基本操作・コマンド ・ 入門

ファイルを探す:find と locate

どこに置いたか分からないファイルは、名前・大きさ・更新日時などの条件で探せる。find は今この場で階層をたどって厳密に探し、locate は事前の索引から一瞬で候補を出す。見つけた先へまとめて処理を流すこともできる。

「あのファイル、どこに置いたっけ」。名前も置き場所もうろ覚え——そんなときこそコマンドの出番だ。条件を言えば、機械が階層をしらみつぶしに探してくれる。

🔦 find:その場で階層をたどる

find 起点ディレクトリ 条件 の形で使う。起点から下を再帰的にたどり、条件に合うものを挙げる。名前・種類・サイズ・更新日時など、条件を組み合わせられる。

find . -name memo.txt.├─ docs/memo.txt ✓├─ src/└─ main.c└─ tmp/└─ memo.txt ✓
find . -name "*.log"(現在地以下の.logを全部) / find /etc -type f -size +1M(1MB超のファイル) / find . -mtime -1(24時間以内に変更)

⚡ locate:索引から一瞬で

find が毎回たどるのに対し、locate は事前に作られた索引データベースを引くので一瞬で候補を出す。索引は updatedb で更新される。ざっくり場所を当たりたいときに速い。

🔧 見つけた先へまとめて処理

find の結果は、そのまま次の処理へ流せる。-exec で1件ずつ実行するか、パイプで xargs に渡してまとめて処理する。検索と処理がひとつながりになる。

つまずきfind . -name "*.tmp" -delete のような破壊的な指定は、まず -delete を外して一覧を確認してから。消す対象を目で見てから実行するのが安全。

この項目に出てくる用語

ワイルドカード(グロブ)わいるどかーど
ファイル名をまとめて指す記号。* は任意の文字列、? は任意の1文字、[ ] は文字集合。

関連コマンド

findlocatexargs

▶ 学習アプリでこの続きを学ぶ・演習する