Warum kann „locate“ oder „find“ „makeinfo“ nicht finden?

Warum kann „locate“ oder „find“ „makeinfo“ nicht finden?

Wenn ich das tue:

locate makeinfo

ODER

find / -name "*makeinfo*"

Ich bekomme nichts.

Aber wenn ich das tue makeinfo --help, erhalte ich die richtige Hilfeausgabe.

Wie ist das möglich? Wennmakeinfo es sich um eine ausführbare Datei handelt, muss sie sich befindenirgendwo, richtig? Oder es kann ein Alias ​​sein, was es nicht ist. Ich überprüfe .bashrc, .bash_aliasesund alle diese Dateien. Ich kann mir nicht vorstellen, wie das passieren kann.

Was sind die Gründe für dieses seltsame Verhalten?

Bearbeiten: type makeinfound which makeinfobeide geben aus /usr/bin/makeinfo.

Antwort1

Ich habe das Problem gefunden.

Das scheint locateschnell zu sein, weil es auf einer Datenbank basiert, die es aufbaut, um Dinge schneller zu suchen. Diese Datenbank wird täglich aktualisiert. Der updatedbBefehl tut das. Wie sich herausstellt, updatedbwird alle 24 Stunden ausgeführt, und als ich versuchte, mit nach der Datei zu suchen locate, waren seit der Erstellung der Datei noch keine 24 Stunden vergangen. Nach dem Ausführen sudo updatedbvon konnte locate die Datei finden.

Ich empfehle , für weitere Informationen die Manpages von locateund zu lesen.updatedb

Was betrifft find, scheint es, als wäre ich ungeduldig gewesen und habe nicht gewartet, bis die Ausführung abgeschlossen war.

Antwort2

Ich verwende 'locate(1)' nicht und weiß auch nicht viel darüber. Aber 'find(1)' kann Ihren Befehl möglicherweise nicht finden, da er standardmäßig nicht Dateisystemzeilen überschreitet. Der Befehl makeinfo befindet sich wahrscheinlich in /usr/bin (tippen Sie, which makeinfoum ihn zu finden), und die Partition '/usr' befindet sich möglicherweise auf einem anderen Dateisystem.

EDIT: Doh! Ich sehe das Problem! Verwenden Sie nicht „*makeinfo*“. Verwenden Sie „makeinfo“. Wenn Sie wirklich eine Datei finden möchten, die irgendwo die Zeichenfolge „makeinfo“ enthält, verwenden Sie: find / -type f -name '*makeinfo*'. Das heißt, vergleichen Sie nur mit Dateien (nicht mit Verzeichnissen – viel schneller) und verwenden Sie einfache Anführungszeichen, keine doppelten Anführungszeichen.

Letzte Bearbeitung: Meine Antwort war /völlig/ daneben. Seine Probleme hatten nichts mit Anführungszeichen zu tun.

verwandte Informationen