В моей системе установлено несколько 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$