【linux】find locate whichの違い
- find…指定したディレクトリから再起的にファイルディレクトリを検索できる。検索条件を柔軟に変更することが可能。ユーザー、容量での検索はlocateでは不可。
- locate…高速なファイル検索ツールでデータベースからファイルの場所を検索できる。データベースはリアルタイム更新ではない。環境によってはインストールされてない可能性もある。
- which…指定したコマンドの実行ファイルのパスを表示。PATH変数の場所が検索対象になる。
findの使い方例
#ファイル名で検索
find /path/to/search -name "file.txt"
#特定の拡張子を持つファイルを検索
find /path/to/search -name "*.jpg"
#サイズでファイルを検索(例: 1MB以上のファイル)
find /path/to/search -size +1M
#最終更新日でファイルを検索(例: 7日以内に更新されたファイル)
find /path/to/search -mtime -7
#特定のユーザーが所有するファイルを検索
find /path/to/search -user username
#空のファイルやディレクトリを検索
find /path/to/search -empty
#検索結果をアーカイブ
find /path/to/search -type f -exec tar -cvf archive.tar {} +
locateの使い方例
#ファイル名での検索
#ディレクトリ指定なし、全体が検索対象になる。
locate fle.txt
#特定の拡張子を持つファイルを検索
locate "*.jpg"
#正規表現で検索
#先頭にfileがつく
locate -r '^file'
#フルパスで検索
locate -b '/var/log/syslog'
whichの使い方例
#コマンドのパスを表示
which ls
#複数のコマンドのパスを一度に表示
which ls cat
所感
findコマンドを使えるようになればOK。
whichはPATHの検索をしたい時。
locateは基本的に使わない。性能要件がシビアな場合にlocateの使用を検討する。