Когда вы делаете locate hosts
, это как если бы вы делали locate '*hosts*'
(, где *
также может соответствовать /
), поэтому вы совпадаете намного чаще. Вам нужно явно указать хотя бы один символ glob, чтобы переопределить это, поэтому используйте
locate '*/hosts'
Если вам нужен файл с hosts
в конце, используйте *hosts
. Если вам нужен какой-либо файл с хостами посередине, это зависит от вашей версии locate. Как заметил steeldriver , mlocate использует -b
, чтобы применить шаблон только к базовому имени, так что вы можете сделать
locate -b '*hosts*'
и с помощью GNU locate вы можете использовать регулярное выражение
locate -r '[^/]*hosts[^/]*$'