locate

Aus Foxwiki


locate sucht schnell nach Dateinamen

Beschreibung

locate basiert auf einem zuvor erstellten Index und ermöglichte eine schnelle Suche nach Dateinamen oder -pfaden.

  • Diese wird regelmäßig aktualisiert, damit locate immer die korrekten Orte anzeigt, an denen sich die Dateien befinden und somit neue Dateien und Datenbewegungen erfasst werden.
  • Nicht das Dateisystem wird durchsucht (wie bei find), sondern ein zuvor erstellter Index.

Vorteil

  • Schnelle Suchergebnisse

Nachteil

  • Nicht alle Verzeichnisse werden durchsucht
    • /tmp, /var/spool, /media
  • Index nicht aktuell

Implementierungen

Paket Beschreibung
locate
slocate
mlocate
plocate
  • plocate findet alle Dateien auf dem System, die dem angegebenen Muster (oder allen Mustern, wenn mehrere angegeben sind) entsprechen.
  • Dies geschieht mit Hilfe eines Index, der von updatedb(8) erstellt oder (seltener) von einem anderen Index durch plocate-build(8) konvertiert wurde.
  • plocate ist weitgehend argumentkompatibel mit mlocate(1), ist aber deutlich schneller.
  • Insbesondere muss es selten seine gesamte Datenbank durchsuchen, es sei denn, das Muster ist sehr kurz (weniger als drei Bytes) oder Sie wollen nach einem regulären Ausdruck suchen.
  • Es versucht nicht, die Kompatibilität mit BSD-Locate oder Nicht-UTF-8-Dateinamen und -Locales zu erhalten.
  • Die meisten E/A werden asynchron durchgeführt, aber die Ergebnisse werden synchronisiert, so dass die Ausgabe jedes Mal in der gleichen Reihenfolge erfolgt.
  • Wenn mehrere Suchmuster angegeben werden, sucht plocate nach Dateien, die alle diese Muster erfüllen.
  • Dies ist die Hauptinkompatibilität zu mlocate(1), das nach Dateien sucht, die auf ein oder mehrere Muster passen, es sei denn, die Option -A wird angegeben.

Standardmäßig werden Muster als Teilstrings betrachtet, nach denen gesucht wird.

  • Wenn mindestens ein nicht-ausgeschriebenes globbing-Metacharakter (*, ? oder []) angegeben wird, wird dieses Muster stattdessen als glob-Muster betrachtet (was bedeutet, dass es mit * beginnen und enden muss, damit eine Teilzeichenkette übereinstimmt).
  • Wenn --regexp angegeben wird, werden die Muster stattdessen als (nicht verankerte) POSIX-Basisausdrücke betrachtet, und wenn --regex angegeben wird, werden die Muster als erweiterte reguläre Ausdrücke von POSIX betrachtet.
  • All dies entspricht dem Verhalten von mlocate(1).

Wie mlocate(1) zeigt plocate alle Dateien an, die für den aufrufenden Benutzer sichtbar sind (da er Lese- und Ausführungsrechte auf allen übergeordneten Verzeichnissen hat), und keine, die es nicht sind, indem es mit gesetztem setgid-Bit läuft, um auf den Index zuzugreifen (der als root erstellt wird), aber indem es die Sichtbarkeit als aufrufender Benutzer testet.

Installation

# apt install plocate

Syntax

$ plocate [OPTION]...  PATTERN...

Parameter

Optionen

Aufgabe Befehl Link
-A --all Ignored for compatibility with mlocate(1).
-b --basename Match only against the file name portion of the path name, ie., the directory names will be excluded from the match (but still printed). This does not speed up the search, but can suppress uninteresting matches.
-c --count Do not print each match. Instead, count them, and print out a total number at the end.
-d --database DBPATH Find matches in the given database, instead of /var/lib/plocate/plocate.db. This argument can be given multiple times, to search multiple databases. It is also possible to give multiple databases in one argument, separated by :. (Any character, including : and \, can be escaped by prepending a \.)
-e --existing Print only entries that refer to files existing at the time locate is run. Note that unlike mlocate(1), symlinks are not followed by default (and indeed, there is no option to change this).
-i --ignore-case Do a case-insensitive match as given by the current locale (default is case-sensitive, byte-by-byte match). Note that plocate does not support the full range of Unicode case folding rules; in particular, searching for ß will not give you matches on ss even in a German locale. Also note that this option will be somewhat slower than a case-sensitive match, since it needs to generate more candidates for searching the index.
-l --limit LIMIT Stop searching after LIMIT matches have been found. If --count is given, the number printed out will be at most LIMIT.
-N --literal Print entry names without quoting. Normally, plocate will escape special characters in filenames, so that they are safe for consumption by typical shells (similar to the GNU coreutils shell-escape-always quoting style), unless printing to a pipe, but this options will turn off such quoting.
-0 --null Instead of writing a newline after every match, write a NUL (ASCII 0). This is useful for creating unambiguous output when it is to be processed by other tools (like xargs(1)), as filenames are allowed to contain embedded newlines.
-r --regexp Patterns are taken to be POSIX basic regular expressions. See regex(7) for more information. Note that this forces a linear scan through the entire database, which is slow.
--regex Like --regexp, but patterns are instead taken to be POSIX extended regular expressions.
-w --wholename Match against the entire path name. This is the default, so unless -b is given first (see above), it will not do anything. This option thus exists only as compatibility with mlocate(1).
--help Print out usage information, then exit successfully.
--version Print out version information, then exit successfully

Konfiguration

Index aktualisieren

# updatedb

siehe Linux/Befehl:updatedb

Dateien

Umgebegung

LOCATE_PATH

  • If given, appended after the list of --database paths (whether an explicit is given or the default is used)
  • Colon-delimiting and character escaping follows the same rules as for --database.

Anwendung

Nach Dateipfaden suchen

$ locate doc/fonts

Groß-/Kleinschreibung ignorieren

$ locate -i Suchbegriff

Dokumentation

Man-Pages

  1. locate(1)
  2. plocate-build(8)
  3. mlocate(1)
  4. updatedb(8)

Info-Pages

Links

Intern

  1. updatedb

Weblinks

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5