Schneller suchen als finden

Schneller suchen als finden

Gibt es eine Möglichkeit, Dinge schneller zu finden als find. Ich mache/habe Folgendes gemacht: -

$sudo find / -perm +4000

Aber es dauert ewig, die erforderlichen Informationen zu finden. Und ich weiß, dass die meisten Dateien, bei denen dieses spezielle Berechtigungsbit gesetzt wäre, statisch/nicht dynamisch wären.

Ich habe es versucht

[$] sudo locate --all / -perm +4000                                                                                               
locate: invalid option -- 'p'

aber wie man sieht, ist es fehlgeschlagen. Irgendwelche Ideen, wie ich mit Locate dasselbe erreichen könnte?

Just to share /usr/bin/locateist symbolisch verknüpft mit , /etc/alternatives/locatedas wiederum symbolisch verknüpft ist mit/usr/bin/mlocate

Antwort1

Leider mlocateindiziert es keine Dateiberechtigungen, daher müssen Sie Ihre Dateisysteme mit scannen find, es sei denn, Sie finden eine Locate-Implementierung mit dieser Funktionalität (oder erweitern mlocatesie selbst).

Antwort2

Wie von @shirish erwähnt, indiziert mlocate keine Dateiberechtigungen. Trotzdem habe ich einige Vorschläge für Sie:

Erstens ist -perm +mode laut Find-Handbuch veraltet, Sie sollten daher stattdessen -perm /mode verwenden.

-perm +Modus

Veraltete, alte Methode zum Suchen nach Dateien mit einem der Berechtigungsbits im Modus. Sie sollten stattdessen -perm /mode verwenden. Der Versuch, die '+'-Syntax mit symbolischen Modi zu verwenden, führt zu überraschenden Ergebnissen. Beispielsweise ist '+u+x' ein gültiger symbolischer Modus (entspricht +u,+x, also 0111) und wird daher nicht als -perm +mode ausgewertet, sondern als der genaue Modusbezeichner -perm mode und findet daher Dateien mit den genauen Berechtigungen 0111 statt Dateien mit einem beliebigen gesetzten Ausführungsbit. Wenn Sie diesen Absatz verwirrend fanden, sind Sie nicht allein – verwenden Sie einfach -perm /mode. Diese Form des -perm-Tests ist veraltet, da die POSIX-Spezifikation die Interpretation eines führenden '+' als Teil eines symbolischen Modus erfordert, und wir sind daher dazu übergegangen, stattdessen '/' zu verwenden.

-perm /Modus

Für die Datei sind alle Berechtigungsbits im Modus gesetzt. Symbolische Modi werden in dieser Form akzeptiert. Sie müssen „u“, „g“ oder „o“ angeben, wenn Sie einen symbolischen Modus verwenden. Einige erläuternde Beispiele finden Sie im Abschnitt BEISPIELE. Wenn im Modus keine Berechtigungsbits gesetzt sind, stimmt dieser Test mit jeder Datei überein (der Sinn besteht darin, mit dem Verhalten von -perm -000 konsistent zu sein).

Zweitens können Sie versuchen, die Suche zu beschleunigen: Dazu müssen Sie so spezifisch wie möglich sein. Zum Beispiel:

find /some/path ...

reduziert die Suchzeit, weil Sie den Pfad angeben, in dem gesucht werden soll (/some/path), anstatt das gesamte Stammverzeichnis (/) zu durchsuchen

Und schließlich können Sie Systemordner ausschließen, die Sie bei der Suche nicht scannen möchten. Beispiel:

 find /some/path -not \( -path /excluded/path -prune \) -name *.js

verwandte Informationen