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

Вы можете принудительно установить пакет:

sudo dpkg -i --force-all /var/cache/apt/archives/mongodb-org-tools_3.6.2_amd64.deb

Затем возобновить с помощью:

sudo apt-get install -f
2
задан 30 March 2018 в 03:24

3 ответа

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

Это поведение по умолчанию locate. См. [F7]:

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

Чтобы соответствовать только имени файла, явно задайте glob в компоненте пути:

locate '*/display-auto-brightness'

Или используйте регулярное выражение и --basename вариант для сопоставления точного имени файла:

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

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

Я оставлю это вам, чтобы использовать это в скрипте, перебирающем каждое имя файла в каталоге.

2
ответ дан 22 May 2018 в 13:01
  • 1
    Если это приемлемо для вас, я предлагаю изменить вопрос на «Как предотвратить обнаружение местоположения от поиска слишком большого количества файлов». используя пример locate 'display-auto-brightness'. Тогда я бы принял ваш ответ так, как есть. Я напишу новый вопрос, ответивший на вопрос позже, после написания сценария, который находит клоны. – WinEunuuchs2Unix 30 March 2018 в 02:47
  • 2
    Конечно, но вы можете просто отправить и принять свой ответ на этот вопрос – muru 30 March 2018 в 03:18
  • 3
    Я хочу, чтобы вы получили кредит на locate --regex 'display-auto-brightness$'. Я также считаю, что микрокомпонент проекта принесет пользу другим пользователям, поскольку, поскольку большая трехсторонняя синхронизация файлов интересует всего несколько человек. – WinEunuuchs2Unix 30 March 2018 в 03:21
Команда locate автоматически помещает * wild card после строки поиска и возвращает лишние нежелательные результаты.

Это поведение по умолчанию locate. См. [F7]:

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

Чтобы соответствовать только имени файла, явно задайте glob в компоненте пути:

locate '*/display-auto-brightness'

Или используйте регулярное выражение и --basename вариант для сопоставления точного имени файла:

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

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

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

Я оставлю это вам, чтобы использовать это в скрипте, перебирающем каждое имя файла в каталоге.

2
ответ дан 17 July 2018 в 20:32
Команда locate автоматически помещает * wild card после строки поиска и возвращает лишние нежелательные результаты.

Это поведение по умолчанию locate. См. [F7]:

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

Чтобы соответствовать только имени файла, явно задайте glob в компоненте пути:

locate '*/display-auto-brightness'

Или используйте регулярное выражение и --basename вариант для сопоставления точного имени файла:

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

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

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

Я оставлю это вам, чтобы использовать это в скрипте, перебирающем каждое имя файла в каталоге.

2
ответ дан 23 July 2018 в 21:10

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

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