как найти вхождения файла с помощью locate

как найти вхождения файла с помощью locate

В моей системе установлено несколько Java, некоторые из них установлены IDE в фоновом режиме, и я хотел узнать, где они находятся. Поэтому я подумал, что можно использовать locateдля их поиска. Моя первая попытка

locate java

было обнаружено несколько тысяч совпадений .*java.*.

Есть ли способ ограничить locate, чтобы найти только файлы с точным именем? Не путь, содержащий 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$

Связанный контент