常に名前を知っているファイルを見つけるためにロケートを使用していますが、ロケートは非常に高速で、それが大好きです。最近作成されたファイルの検索は素晴らしいです。通常、最近作成されたファイルは基本的にどこで作成されたかを知っているので、ファイルシステム全体を検索する必要はありません。
しかし、ディレクトリの場所を忘れてしまったとき、findもlocateも理想的ではないようです。
ディレクトリ内のすべてのファイルもロケートに一致するため、ロケートは常に大量の情報を出力します。たとえば、ファイルシステムのどこかにlogという名前のディレクトリを検索していた場合、ログは大量の結果を返します。findで同じことをすると、find / -name log -type d findの実行に数分かかり、読み取りできないフォルダーに遭遇するたびに、あらゆる種類のアクセス許可エラーを吐き出します。
もっと良い方法はありますか?
答え:だから私は他の何かを見つけるまでgrepに固執しています。
locatedir () {
for last; do true; done
if [[ $last == *\/* ]]
then
locate $@ | grep "${last}\$"
else
locate $@ | grep "/${last}\$"
fi
}
locate
独自の組み込み正規表現機能:-r
または--regex
...オプションの全範囲については、以下を参照してください:info