ファイル検索系コマンドの比較(find / locate / which / whereis)

投稿者: | 7月 24, 2025

基本比較

コマンド主な用途検索対象データベース依存特徴
find高度な条件検索ファイルシステム全体(リアルタイム)×正確・柔軟・やや遅い
locate高速なキーワード検索updatedb でインデックスされたパス非常に高速・結果が古い場合あり
which実行ファイルの検索$PATH 環境変数にある実行ファイル×シンプル・スクリプト用途に便利
whereis実行ファイル+関連情報固定ディレクトリ(例:/bin, /usr×実行ファイル・manページなどまとめて確認可

使用例

find /etc -name "ssh*"
locate nginx.conf
which python3
whereis bash
  • find:リアルタイムで正確な検索が可能
  • locate:インデックス済みの情報から高速検索
  • which:現在のPATH上の実行ファイルを特定
  • whereis:実行ファイル+マニュアルの場所を表示

findの応用例

find /var/log -type f -name "*.log" -size +100M
find . -mtime -1 -exec ls -l {} \;
  • -name:ファイル名一致
  • -type f/d:ファイル or ディレクトリ
  • -size +100M:サイズ指定
  • -mtime:更新日
  • -exec:一致ファイルに対する処理を実行

locateの注意点

  • 使用前に sudo updatedb でインデックスを更新
  • 設定ファイル /etc/updatedb.conf で除外パスや対象ディレクトリを調整可能
  • インデックスは定期更新されないと古い情報を返すことがある

which と whereis の違い

コマンド出力例対象内容
which vim/usr/bin/vim実行ファイルのフルパスのみ
whereis vimvim: /usr/bin/vim /usr/share/man/man1/vim.1.gz実行ファイル+マニュアルなど複数

推奨用途

条件推奨コマンド
高度・条件付き検索がしたいfind
とにかく高速に検索したいlocate
実行パスを確認したいwhich
manページなども含めて確認したいwhereis

参考リンク

  • https://man7.org/linux/man-pages/man1/find.1.html
  • https://man7.org/linux/man-pages/man1/locate.1.html
  • https://man7.org/linux/man-pages/man1/which.1.html
  • https://man7.org/linux/man-pages/man1/whereis.1.html