Locate: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Man-Pages“ durch „Man-Page“
 
(66 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''locate''' ist ein Programm, mit dessen Hilfe man auf der Kommandozeile nach Dateien suchen kann.
{{DISPLAYTITLE:locate}}
 
'''locate''' sucht schnell nach Dateinamen


= Beschreibung =
= Beschreibung =
* Hierbei wird aber nicht das gesamte Datenverzeichnis durchsucht (wie bei find), sondern eine Datenbank, die zuvor angelegt wurde.  
''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.
* 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.
* Der Vorteil diese Methode besteht darin, dass das Durchsuchen der Datenbank sehr schnell geht, und die Suchergebnisse praktisch sofort zur Verfügung stehen.
* Allerdings muss man beachten, dass die Verzeichnisse (und deren Unterverzeichnisse) /tmp, /var/spool und /media von Haus aus nicht indexiert werden, da sich die Inhalte dieser Verzeichnisse permanent ändern.


= Installation =
* Nicht das Dateisystem wird durchsucht (wie bei find), sondern ein zuvor erstellter Index.
Locate gibt es in verschiedenen Varianten. Empfohlen wird das Paket
 
'''Vorteil'''
* Schnelle Suchergebnisse
 
'''Nachteil'''
* Nicht alle Verzeichnisse werden durchsucht
** /tmp, /var/spool, /media
* Index nicht aktuell
 
'''Implementierungen'''
{| class="wikitable sortable"
|-
! 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.


# '''apt install mlocate'''
* plocate ist weitgehend argumentkompatibel mit mlocate(1), ist aber deutlich schneller.


= Syntax =
* 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.


=  Aktualisierung der Datenbank  =
* Wenn mehrere Suchmuster angegeben werden, sucht plocate nach Dateien, die alle diese Muster erfüllen.  
* Aktuelle Änderungen am Dateibestand werden durch locate nicht gefunden, da ja nur eine Datenbank durchsucht wird.  
* 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.
* Hat man also erst kürzlich Daten manipuliert und möchte sie wiederfinden, so verwendet man entweder [[Linux:Befehl:find|find]] oder man stößt die Aktualisierung der Datenbank von Hand an und wartet je nach Größe des Dateisystems ein bisschen.  
# '''updatedb'''


Weitere Benutzereingriffe sind normalerweise nicht notwendig, da mittels /etc/cron.daily/mlocate eine automatische Aktualisierung einmal pro Tag stattfindet.
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).


= Anwendungen =
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.
Die Benutzung von "locate" ist recht einfach, man ruft in einem Terminal den Befehl zusammen mit dem Suchbegriff auf.
locate Suchbegriff


Zu beachten ist hierbei, dass zwischen Groß- und Kleinschreibung unterschieden wird. Dies kann mit dem Schalter -i übergangen werden, sodass keine Unterscheidung mehr gemacht wird.
= Installation =
  locate -i Suchbegriff
  # '''apt install plocate'''


= Verzeichnisse aus der Datenbank ausschließen  =
= Syntax =
* Sollen noch weitere Verzeichnisse aus dem Index ausgeschlossen werden (z.B. ein Backup-Verzeichnis), so muss die Datei '''/etc/updatedb.conf''' mit Root-Rechten bearbeitet werden. Die von der Indexierung auszuschließenden Verzeichnisse müssen der Variablen PRUNEPATHS angehängt werden.
$ '''plocate [OPTION]... PATTERN...'''
* Ein gutes Beispiel hierfür ist ein Backup-Verzeichnis.  
* Zum einen wird (z.B. bei der Nutzung von [https://wiki.ubuntuusers.de/Back_In_Time/ Back In Time]) jede Datei sonst mehrmals aufgelistet (das Original und jedes Backup), zum anderen muss sonst beim Erstellen der Datenbank das ganze Backup-Verzeichnis mit durchsucht werden, was Zeit kostet und CPU- sowie Festplattenlast erzeugt.  


Ist das Verzeichnis z.B. '''/mnt/backup''', so lautet die entsprechende Zeile (sofern sonst nichts zur Vorgabe hinzugefügt wurde):
== Parameter ==
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /mnt/backup"


Nach der nächsten Aktualisierung des Indexes findet locate dann keine Dateien und Ordner unterhalb dieser Verzeichnisse mehr.
== Optionen ==
{| class="wikitable sortable"
|-
! 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]]


= Links =
== Dateien ==
== Dateien ==


== Man-Pages ==
== 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-Page ==
# locate(1)
# plocate-build(8)
# mlocate(1)
# updatedb(8)
== Info-Pages ==
= Links =
== Intern ==
== Intern ==
# [[Linux:Befehl:updatedb]]
# [[updatedb]]


== Weblinks ==
== Weblinks ==
# https://wiki.ubuntuusers.de/locate


[[Category:Linux:Suchen]]
 
[[Category:Linux:Befehl]]
 
[[Kategorie:Linux/Suchen]]
[[Kategorie:Linux/Befehl]]
{{DEFAULTSORT:locate}}

Aktuelle Version vom 6. November 2024, 12:23 Uhr


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-Page

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

Info-Pages

Links

Intern

  1. updatedb

Weblinks