Найдите команда возвращает слишком много результатов

Я сделал ошибку копирования тех же файлов к различным разделам с благими намерениями сократить (удаление) их из источника или цели (целей) позже. Теперь, когда я пытаюсь определить местоположение их, я получаю слишком много результатов locate команда:

rick@alien:~$ locate "display-auto-brightness"
/etc/cron.d/display-auto-brightness
/home/rick/Pictures/display-auto-brightness conky.png
/home/rick/Pictures/display-auto-brightness systray.png
/home/rick/Pictures/display-auto-brightness-config 1.png
/home/rick/Pictures/ps display-auto-brightness.png
/lib/systemd/system-sleep/display-auto-brightness
/mnt/e/etc/cron.d/display-auto-brightness
/mnt/e/lib/systemd/system-sleep/display-auto-brightness
/mnt/e/usr/local/bin/display-auto-brightness
/usr/local/bin/display-auto-brightness

locate команда автоматически помещает * подстановочный знак после строки поиска и возврата дополнительных нежелательных результатов. .png файлы не должны быть возвращены.

Почему locate возврат слишком многих результатов?

2
задан 30 March 2018 в 03:24

1 ответ

locate команда автоматически помещает * подстановочный знак после строки поиска и возвращает дополнительные нежелательные результаты.

Это - поведение по умолчанию locate. Посмотрите man locate:

If any PATTERN contains no globbing characters, locate  behaves  as  if
the pattern were *PATTERN*.

Для соответствия только против имени файла явно установите шарик в компоненте контура:

locate '*/display-auto-brightness'

Или используйте regex и --basename опция для соответствия точному имени файла:

locate --basename --regex '^display-auto-brightness$'

Или, учитывая результаты Вы показали, Вам могла сойти с рук просто просьба о путях, которые содержат display-auto-brightness в конце:

locate --regex 'display-auto-brightness$'

Я оставлю его Вами для использования этого в цикличном выполнении сценария по каждому имени файла в каталоге.

2
ответ дан 2 December 2019 в 03:34

Другие вопросы по тегам:

Похожие вопросы: