基本比較
コマンド | 主な用途 | 検索対象 | データベース依存 | 特徴 |
---|
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 vim | vim: /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