Locate: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
Rad 1: Rad 1:
==== NAMN ====
== locate - Hitta filer snabbt med en databas ==
''locate'' - hitta filer efter namn
Kommandot `locate` används för att snabbt hitta filer genom att söka i en förbyggd databas.


==== SYNOPSIS ====
=== Syntax ===
       ''locate'' [OPTION]... PATTERN...
locate [ALTERNATIV]... MÖNSTER...


==== BESKRIVNING ====
=== Beskrivning ===
Lokalisera läser en eller flera databaser förberedda av updatedb(8) och skriver filnamn som matchar minst en av
Kommandot `locate` söker efter filer och kataloger som matchar angivna mönster. Det använder en förbyggd databas över filsystemet, vilket gör sökningarna mycket snabbare jämfört med kommandot `find`.


MÖNSTER till standardutgång, ett per rad.
=== Alternativ ===
Kommandot `locate` stöder många alternativ som kan användas för att justera sökningen:


Om --regex inte anges, kan PATTERNs innehålla globbing-tecken. Om något MÖNSTER  innehåller  ingen  globbing
* `-A, --all` - Visa endast de poster som matchar alla angivna mönster.
* `-b, --basename` - Matcha endast basnamnet på filer (ignorerar sökvägen).
* `-c, --count` - Skriv endast ut antalet poster som matchar.
* `-d, --database DBPATH` - Använd den angivna databasen istället för standarddatabasen.
* `-e, --existing` - Visa endast poster för filer som existerar vid söktillfället.
* `-i, --ignore-case` - Ignorera skiftlägeskänslighet vid sökning.
* `-l, --limit N` - Begränsa antalet matchande poster till N.
* `-P, --nofollow, --physical` - Följ inte symboliska länkar.
* `-r, --regexp REGEXP` - Tolka mönster som reguljära uttryck.
* `-S, --statistics` - Visa statistik om databasen.
* `-q, --quiet` - Undertryck felmeddelanden om icke-existerande filer.
* `-0, --null` - Separera utdata med null-tecken istället för ny rad.
* `--help` - Visa hjälpmeddelandet och avsluta.
* `--version` - Visa versionsinformation och avsluta.


tecken, lokalisera beter sig som om mönstret var *MÖNSTER*. Som standard kontrollerar inte locate om filer som finns i databasen fortfarande finns (men det kräver alla överordnade kataloger finns om databasen byggdes med --require-visibility no). lokalisera kan aldrig rapportera filer skapas efter den senaste uppdateringen av den relevanta databasen.
=== Exempel ===
Här är några praktiska exempel som visar hur du kan använda `locate`-kommandot:


==== AVSLUTA STATUS ====
* För att hitta alla filer som innehåller ordet "fil" i deras namn:
lokalisera utgångar med status 0 om någon matchning hittades eller om lokalisering anropades med någon av --limit 0, --help,
<code>
locate fil
</code>


--statistik eller --versionsalternativ. Om ingen matchning hittades eller om ett allvarligt fel påträffades, leta reda på utgångar med
* För att hitta alla filer som matchar ett specifikt mönster, t.ex. alla textfiler:
<code>
locate "*.txt"
</code>


status 1.
* För att hitta alla filer med ett specifikt basnamn:
<code>
locate -b "\.bashrc"
</code>


Fel som uppstår vid läsning av en databas är inte dödliga, sökningen fortsätter i andra specificerade databaser, om några.
* För att ignorera skiftlägeskänslighet vid sökning:
<code>
locate -i fil
</code>


==== ALTERNATIV ====
* För att visa antalet poster som matchar ett mönster:
<code>
locate -c fil
</code>


===== ''-A, --all'' =====
* För att använda en specifik databas:
''Skriv endast ut poster som matchar alla MÖNSTER istället för att kräva att bara en av dem matchar.''
<code>
locate -d /väg/till/databas fil
</code>


===== ''-b, --basename'' =====
* För att tolka mönstret som ett reguljärt uttryck:
Matcha endast basnamnet mot de angivna mönstren. Detta är motsatsen till --helnamn.
<code>
locate -r "^/usr.*bin/gcc"
</code>


===== ''-c, --count'' =====
* För att visa statistik om databasen:
Istället för att skriva filnamn på standardutdata, skriv bara antalet matchande poster.
<code>
locate -S
</code>


===== ''-d, --database'' DBPATH =====
* För att begränsa antalet resultat till 10:
Ersätt standarddatabasen med DBPATH. DBPATH är en :-separerad lista med  databasfil namn. Om mer  än  ett  --database -alternativ anges, är den resulterande sökvägen en sammanlänkning av de separata sökvägarna.
<code>
locate -l 10 fil
</code>


Ett tomt databasfilnamn ersätts av standarddatabasen. Ett databasfilnamn – hänvisar till standardindata. Observera att en databas endast kan läsas från standardinmatningen en gång.
=== Skillnader mellan macOS och Linux ===
Det finns några viktiga skillnader att tänka på när man använder `locate`-kommandot på macOS jämfört med Linux:


===== ''-e, --existing'' =====
* **Standardinstallationer**: På de flesta Linux-distributioner är `locate` en del av GNU findutils eller mlocate, medan macOS använder en version som är en del av BSD locate. Detta innebär att vissa alternativ och beteenden kan skilja sig åt.
Skriv endast ut poster som hänvisar till filer som fanns vid den tidpunkt då lokaliseringen körs.
* **Databasuppdatering**: På Linux används vanligtvis kommandot `updatedb` för att uppdatera databasen som `locate` använder. På macOS uppdateras databasen automatiskt genom systemets underhållsuppgifter.
* **Databasplats**: Standardplatsen för databasen kan skilja sig. På Linux är det vanligtvis `/var/lib/mlocate/mlocate.db` eller `/var/cache/locate/locatedb`. På macOS är det `/var/db/locate.database`.
* **Prestanda och optimering**: Linux och macOS kan ha olika prestandakarakteristika beroende på hur deras filsystem och sökalgoritmer är implementerade. macOS använder HFS+ eller APFS, medan Linux vanligtvis använder ext4, Btrfs, XFS eller andra filsystem. Detta kan påverka hur snabbt `locate`-kommandot utför sina sökningar.
* **Flaggor och funktioner**: Vissa GNU-specifika flaggor och funktioner kan saknas i BSD-versionen av `locate` som används på macOS. Till exempel kan vissa avancerade sökalternativ som `-A` (matcha alla mönster) vara specifika för GNU locate.


===== ''-L, --follow'' =====
Här är några exempel som visar skillnaderna:
När du kontrollerar om filer  finns (om alternativet --existing är specificerat), följ efterföljande symboliska länkar. Detta gör att trasiga symboliska länkar utelämnas från utgången. Detta är standardbeteendet. Motsatsen kan specificeras med --nofollow.


===== ''-h, --help'' =====
* På Linux kan du använda `updatedb` för att uppdatera databasen:
Skriv en sammanfattning av de tillgängliga alternativen för att standardutmata och avsluta framgångsrikt.
<code>
sudo updatedb
</code>
På macOS sker detta automatiskt eller kan göras manuellt med:
<code>
sudo /usr/libexec/locate.updatedb
</code>


===== -i, --ignore-case =====
* Användning av `-d` alternativet på Linux och macOS kan skilja sig:
Ignorera skiftlägesskillnader när du matchar mönster.
<code>
locate -d /path/to/locate.db fil
</code>
På macOS måste du vara säker på att du har rätt databas och att den är uppdaterad.


===== -p, --ignore-spaces =====
* För att söka utan att följa symboliska länkar på Linux:
Ignorera skiljetecken och mellanslag när du matchar mönster.
<code>
locate -P fil
</code>
Detta kan skilja sig på macOS beroende på versionen av locate.


===== ''-t, --transliterate'' =====
Det är alltid bra att konsultera `man`-sidan för `locate` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga.
Ignorera accenter med iconv-translitteration när du matchar mönster.


===== -l, --limit, -n LIMIT =====
=== Felsökning ===
Avsluta framgångsrikt efter att ha hittat LIMIT poster. Om alternativet --count anges är det resulterande antalet också begränsat till LIMIT.
Om du får ett felmeddelande när du använder `locate`, kontrollera följande:


===== ''-m, --mmap'' =====
* Att databasen är uppdaterad. Om databasen är föråldrad kan den sakna nyligen tillagda filer.
Ignoreras, för kompatibilitet med BSD och GNU-lokalisering.
* Att du har rättigheter att läsa databasen.
* Att syntaxen för ditt uttryck är korrekt. Kontrollera att du använder korrekta alternativ och parametrar.


===== ''-P, --nofollow, -H'' =====
=== Se även ===
När du kontrollerar om filer finns (om alternativet --existing är angivet), följ inte efterföljande symboliska länkar. Detta gör att trasiga symboliska länkar rapporteras som andra filer.
* [[find]] - Sök efter filer och kataloger i realtid.
* [[updatedb]] - Uppdatera databasen som används av locate.
* [[grep]] - Sök efter mönster i filer.
* [[xargs]] - Bygg och kör kommandon från standardinmatning.


===== -0, --null =====
=== Källor ===
Separate  the  entries  on output using the ASCII NUL character instead of writing each entry on a separate line.  This option is designed for interoperability with the --null option of GNU xargs(1).
* [https://man7.org/linux/man-pages/man1/locate.1.html locate(1) man-sida]
* [https://ss64.com/osx/locate.html macOS locate manual]


Detta är motsatsen till --follow.
[[Kategori:Linuxkommandon]]
 
===== ''-S, --statistics'' =====
Write statistics about each read database to standard output instead of searching for files and exit successfully.
 
===== ''-q, --quiet'' =====
Write no messages about errors encountered while reading and processing databases.
 
===== ''-r, --regexp REGEXP'' =====
 Sök efter ett grundläggande regexp REGEXP. Inga MÖNSTER är tillåtna om detta alternativ används, men det här alternativet kan anges flera gånger.
 
===== --regex   =====
Tolka alla PATTERNs som utökade regexps.
 
===== ''-s, --stdio  '' =====
Ignoreras, för kompatibilitet med BSD och GNU-lokalisering.
 
===== ''-V, --version'' =====
Skriv information om versionen och licensen för lokalisera på standardutdata och avsluta framgångsrikt.
 
===== ''-w, --wholename''   =====
Matcha endast hela sökvägsnamnet mot de angivna mönstren. Detta är standardbeteendet. Motsatsen kan specificeras med --basename.
 
==== '''EXEMPEL''' ====
För att söka efter en fil med exakt namnet NAME (inte *NAME*), använd
 
lokalisera -b '\NAME' Eftersom \ är ett globbing-tecken, inaktiverar detta den implicita ersättningen av NAME med *NAME*.
 
==== '''FILER''' ====
      /var/lib/mlocate/mlocate.db
 
Databasen sökte som standard.
 
==== '''ENVIRONMENT''' ====
      LOCATE_PATH
 
Sökväg till ytterligare databaser, tillagd efter standarddatabasen eller de databaser som anges med alternativet --database.
 
==== '''NOTES''' ====
Ordningen i vilken de begärda databaserna bearbetas är ospecificerad, vilket gör det möjligt för locate att ordna om databasens sökväg av säkerhetsskäl. locate försöker vara kompatibel med slocate (utan alternativen som används för att skapa databaser) och GNU locate, i den ordningen. Detta är anledningen till det opraktiska standardalternativet --follow och   för den förvirrande uppsättningen --regex och --regexp alternativ.
 
Den korta stavningen av alternativet -r är inkompatibelt med GNU locate, där det motsvarar alternativet --regex. Använd de långa alternativnamnen för att undvika förvirring.
 
Miljövariabeln LOCATE_PATH ersätter standarddatabasen i BSD och GNU locate, men den läggs till i andra databaser i denna implementering och slocate.
 
==== '''FÖRFATTARE''' ====
      Miloslav Trmac [[Mailto:mitr@redhat.com|<mitr@redhat.com]]>
 
'''SE ÄVEN'''
 
      updatedb(8), iconv(1),

Versionen från 26 maj 2024 kl. 06.49

locate - Hitta filer snabbt med en databas

Kommandot `locate` används för att snabbt hitta filer genom att söka i en förbyggd databas.

Syntax

locate [ALTERNATIV]... MÖNSTER...

Beskrivning

Kommandot `locate` söker efter filer och kataloger som matchar angivna mönster. Det använder en förbyggd databas över filsystemet, vilket gör sökningarna mycket snabbare jämfört med kommandot `find`.

Alternativ

Kommandot `locate` stöder många alternativ som kan användas för att justera sökningen:

  • `-A, --all` - Visa endast de poster som matchar alla angivna mönster.
  • `-b, --basename` - Matcha endast basnamnet på filer (ignorerar sökvägen).
  • `-c, --count` - Skriv endast ut antalet poster som matchar.
  • `-d, --database DBPATH` - Använd den angivna databasen istället för standarddatabasen.
  • `-e, --existing` - Visa endast poster för filer som existerar vid söktillfället.
  • `-i, --ignore-case` - Ignorera skiftlägeskänslighet vid sökning.
  • `-l, --limit N` - Begränsa antalet matchande poster till N.
  • `-P, --nofollow, --physical` - Följ inte symboliska länkar.
  • `-r, --regexp REGEXP` - Tolka mönster som reguljära uttryck.
  • `-S, --statistics` - Visa statistik om databasen.
  • `-q, --quiet` - Undertryck felmeddelanden om icke-existerande filer.
  • `-0, --null` - Separera utdata med null-tecken istället för ny rad.
  • `--help` - Visa hjälpmeddelandet och avsluta.
  • `--version` - Visa versionsinformation och avsluta.

Exempel

Här är några praktiska exempel som visar hur du kan använda `locate`-kommandot:

  • För att hitta alla filer som innehåller ordet "fil" i deras namn:

locate fil

  • För att hitta alla filer som matchar ett specifikt mönster, t.ex. alla textfiler:

locate "*.txt"

  • För att hitta alla filer med ett specifikt basnamn:

locate -b "\.bashrc"

  • För att ignorera skiftlägeskänslighet vid sökning:

locate -i fil

  • För att visa antalet poster som matchar ett mönster:

locate -c fil

  • För att använda en specifik databas:

locate -d /väg/till/databas fil

  • För att tolka mönstret som ett reguljärt uttryck:

locate -r "^/usr.*bin/gcc"

  • För att visa statistik om databasen:

locate -S

  • För att begränsa antalet resultat till 10:

locate -l 10 fil

Skillnader mellan macOS och Linux

Det finns några viktiga skillnader att tänka på när man använder `locate`-kommandot på macOS jämfört med Linux:

  • **Standardinstallationer**: På de flesta Linux-distributioner är `locate` en del av GNU findutils eller mlocate, medan macOS använder en version som är en del av BSD locate. Detta innebär att vissa alternativ och beteenden kan skilja sig åt.
  • **Databasuppdatering**: På Linux används vanligtvis kommandot `updatedb` för att uppdatera databasen som `locate` använder. På macOS uppdateras databasen automatiskt genom systemets underhållsuppgifter.
  • **Databasplats**: Standardplatsen för databasen kan skilja sig. På Linux är det vanligtvis `/var/lib/mlocate/mlocate.db` eller `/var/cache/locate/locatedb`. På macOS är det `/var/db/locate.database`.
  • **Prestanda och optimering**: Linux och macOS kan ha olika prestandakarakteristika beroende på hur deras filsystem och sökalgoritmer är implementerade. macOS använder HFS+ eller APFS, medan Linux vanligtvis använder ext4, Btrfs, XFS eller andra filsystem. Detta kan påverka hur snabbt `locate`-kommandot utför sina sökningar.
  • **Flaggor och funktioner**: Vissa GNU-specifika flaggor och funktioner kan saknas i BSD-versionen av `locate` som används på macOS. Till exempel kan vissa avancerade sökalternativ som `-A` (matcha alla mönster) vara specifika för GNU locate.

Här är några exempel som visar skillnaderna:

  • På Linux kan du använda `updatedb` för att uppdatera databasen:

sudo updatedb

På macOS sker detta automatiskt eller kan göras manuellt med:

sudo /usr/libexec/locate.updatedb

  • Användning av `-d` alternativet på Linux och macOS kan skilja sig:

locate -d /path/to/locate.db fil

På macOS måste du vara säker på att du har rätt databas och att den är uppdaterad.
  • För att söka utan att följa symboliska länkar på Linux:

locate -P fil

Detta kan skilja sig på macOS beroende på versionen av locate.

Det är alltid bra att konsultera `man`-sidan för `locate` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga.

Felsökning

Om du får ett felmeddelande när du använder `locate`, kontrollera följande:

  • Att databasen är uppdaterad. Om databasen är föråldrad kan den sakna nyligen tillagda filer.
  • Att du har rättigheter att läsa databasen.
  • Att syntaxen för ditt uttryck är korrekt. Kontrollera att du använder korrekta alternativ och parametrar.

Se även

  • find - Sök efter filer och kataloger i realtid.
  • updatedb - Uppdatera databasen som används av locate.
  • grep - Sök efter mönster i filer.
  • xargs - Bygg och kör kommandon från standardinmatning.

Källor