ファイルの出現箇所をlocateを使って見つける方法

ファイルの出現箇所をlocateを使って見つける方法

私のシステムにはJavaが複数インストールされており、IDEによってサイレントにインストールされたものもあるので、それらがどこにあるのか知りたいと思いました。そこで、locateそれらを見つけるために

locate java

数千件のヒットがありました.*java.*

正確な名前を持つファイルのみを検索するように検索を制限する方法はありますか? Java を含むパスではありません。名前の一部に Java を含むファイルではありません。

PS: 以前にも同様の問題があったので、Java の部分は無視して、ファイルを見つける問題として扱ってください。これは、 のすべての出現を見つける問題である可能性もありますgcc

答え1

からman locate

正確に名前が付けられたファイルを検索するにはNAME( ではない) *NAME*
locate -b '\NAME'

locate -b '\java'
  • -b- 指定されたパターンに対してベース名のみを一致させます。

答え2

ほとんどの実装ではlocate:

locate '*/java'

動作するはずです。

引数にワイルドカードが含まれていない場合、引数はファイル パスで検索する文字列として扱われます。

ワイルドカードが含まれている場合、ワイルドカードは完全なパスと一致する必要があります。したがって、ここでは . で終わるパスはすべて一致します/java

答え3

find見つけるには良い方法かもしれないジャワ名前付きファイル。

find . -type f -name *java*

引き続きlocateを使いたい場合は、locate -bまたは

locate java | grep java$

関連情報