Почему не удается найти «makeinfo» с помощью «locate» или «find»?

Почему не удается найти «makeinfo» с помощью «locate» или «find»?

Когда я делаю:

locate makeinfo

ИЛИ

find / -name "*makeinfo*"

Я ничего не получаю.

Но когда я это делаю makeinfo --help, он выдает мне надлежащую справочную информацию.

Как это возможно? Если makeinfoэто исполняемый файл, он должен быть расположенгде-то, правильно? Или это может быть псевдоним, которым он не является. Я проверяю .bashrc, .bash_aliasesи все эти файлы. Я не могу себе представить, как это может произойти.

В чем причины такого странного поведения?

Редактировать: type makeinfoи which makeinfoоба вывода /usr/bin/makeinfo.

решение1

Я нашел проблему.

Кажется, это locateбыстро, потому что он полагается на базу данных, которую он создает, чтобы искать вещи быстрее. Эта база данных обновляется ежедневно. Команда updatedbделает это. Как оказалось, updatedbзапускается каждые 24 часа, и 24 часа не прошли, когда я попытался найти файл с помощью locate, с момента создания файла. После запуска sudo updatedb, locate смог найти файл.

Для получения дополнительной информации я рекомендую прочитать страницы руководства locateи .updatedb

Что касается find, то, видимо, я проявил нетерпение и не стал дожидаться его завершения.

решение2

Я не использую или не знаю много о 'locate(1)'. Но 'find(1)' может не найти вашу команду, потому что по умолчанию она не пересекает линии файловой системы. Команда makeinfo, скорее всего, находится в /usr/bin (введите, which makeinfoчтобы найти ее), а раздел '/usr' может находиться в другой файловой системе.

EDIT: Ого! Я вижу проблему! не используйте "*makeinfo*". Используйте 'makeinfo'. Если вы действительно хотите найти файл, в котором где-то есть строка 'makeinfo', используйте: find / -type f -name '*makeinfo*'. То есть, сравнивайте только с файлами (не с каталогами — гораздо быстрее) и используйте одинарные кавычки, а не двойные.

Окончательное ПРАВКА: Мой ответ был /далеко/ неверным. Его проблемы не были связаны с двойными кавычками.

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