locate findet nicht alle Dateien, die es sollte

4557
neubert

Ich gebe locate gmp.han der Eingabeaufforderung ein und erhalte Folgendes:

/usr/src/linux-headers-3.13.0-24/include/linux/igmp.h /usr/src/linux-headers-3.13.0-24/include/uapi/linux/igmp.h /usr/src/linux-headers-3.13.0-24-generic/include/linux/igmp.h 

Aber wenn ich das ls /usr/include/x86-64-linux-gnu/sehe, sehe ich Folgendes:

a.out.h asm bits c++ fpu_control.h gmp.h gnu ieee754.h sys 

Warum wird nicht locategesucht /usr/include/x86-64-linux-gnu/gmp.h?

edit: ls -l /usr/include/x64-64-linux-gnu/gmp.hsagt das:

ls: cannot access /usr/include/x64-64-linux-gnu/gmp.h: No such file or diretory 

Warum würde es ls /usr/include/x86-64-linux-gnu/sagen, dass es existiert, wenn ls -l /usr/include/x64-64-linux-gnu/gmp.hes nicht sagt?

Ein Screenshot:

locate findet nicht alle Dateien, die es sollte

3
Wann wurden die Dateien erstellt, nach denen Sie suchen? Wann haben Sie Ihre Suchdatenbank zuletzt aktualisiert? (Vor oder nach dem Hinzufügen der Dateien)? Hennes vor 9 Jahren 1
Vor ein paar Minuten. Ich wusste nicht, dass die Datenbank aktualisiert werden musste lol. Dadurch wurde das Problem gelöst - danke! neubert vor 9 Jahren 1
Könnten Sie "ls -l /usr/include/x86-64-linux-gnu/gmp.h" ausführen und die Ausgabe Ihrer Frage hinzufügen? Kenster vor 9 Jahren 0
Erledigt. Siehe meine aktualisierte Frage neubert vor 9 Jahren 0
Versuchen Sie "ls -l / usr / include / x64-64-linux-gnu". Ich vermute, dass der Eintrag `gmp.h` ein symbolischer Link ist, der auf eine nicht vorhandene Datei verweist. Kenster vor 9 Jahren 0
Es sieht so aus, als ob es für mich existiert, wenn ich `ls -l` mache. Ich habe meinen Beitrag mit einem Screenshot aktualisiert .. neubert vor 9 Jahren 0
Ich habe meine Antwort entfernt. Sie haben gesagt, die Datei befindet sich in `/ usr / include / x86-64-linux-gnu /`. Laut Ihrem Screenshot handelt es sich jedoch tatsächlich um `/ usr / include / x86_64-linux-gnu /` (Unterstrich statt Bindestrich). Kenster vor 9 Jahren 1

1 Antwort auf die Frage

4
Hennes

locatefindet keine Dateien im Dateisystem. Stattdessen wird in einer Datenbank gesucht, die alle Dateien enthält.

Diese Datenbank wurde normalerweise einmal pro Tag aktualisiert, normalerweise um 3 Uhr morgens.

Sie können es manuell mit einem Befehl wie aktualisieren updatedb(oder, wenn Sie nicht mit ausreichenden Anmeldeinformationen angemeldet sind:) sudo updatedb. Weitere Informationen finden Sie unter man updatedb.


Aufgrund Ihres Postens, das / usr / src / linux-headers-3 enthielt, ging ich davon aus, dass Sie dies auf einer Linux-Distribution ausführen. Bei anderen Betriebssystemen funktioniert der Befehl locate möglicherweise etwas anders. Bei FreeBSD soll beispielsweise der Befehl zur manuellen Aktualisierung der Suchdatenbank ausgeführt werden, /usr/libexec/locate.updatedbder wöchentlich aktualisiert wird /etc/periodic/weekly/310.locate.