Linux Locate Kommando för nybörjare (8 exempel)

Och även om find utan tvekan är ett av de mest populära och kraftfulla kommandoradsverktygen för att söka efter filer i Linux, är det inte tillräckligt snabbt för situationer där du behöver omedelbara resultat. Om du vill söka en fil på ditt system via kommandoraden, och snabbhet är högsta prioritet, finns det ett annat kommando som du kan använda: Locate.

I den här handledningen kommer vi att diskutera kommandot locate med hjälp av lättförståeliga exempel. Observera att alla instruktioner/exempel som nämns här har testats på Ubuntu 16.04 LTS, och locate-versionen vi har använt är 0.26.

Hur man använder locate-kommandot i Linux

Locate-kommandot är mycket enkelt att använda. Allt du behöver göra är att ge det filnamnet du vill söka efter.

locate 

Till exempel, om jag vill söka efter alla filnamn som har strängen ’dir2’ i sig, så kan jag göra det med hjälp av locate på följande sätt:

Notera: Kommandot ’locate dir2’ (utan stjärnor) kommer också att göra det, eftersom locate implicit ersätter det namn du ger (säg NAME) med *NAME*.

Hur kommandot locate fungerar, eller varför är det så snabbt

Anledningen till att locate är så snabbt är att det inte läser filsystemet efter det sökta fil- eller katalognamnet. Det hänvisar faktiskt till en databas (förberedd av kommandot updatedb) för att hitta vad användaren söker och baserat på den sökningen producerar det sitt utdata.

Men även om detta är ett bra tillvägagångssätt har det sin del av nackdelar. Huvudproblemet är att efter varje ny fil eller katalog som skapas i systemet måste du uppdatera verktygets databas för att det ska fungera korrekt. Annars kommer kommandot inte att kunna hitta filer/kataloger som har skapats efter den senaste databasuppdateringen.

Om jag till exempel försöker hitta filer med namn som innehåller strängen ”tosearch” i katalogen ”Downloads” på mitt system, ger kommandot find ett resultat i utmatningen:

Men när jag försöker utföra samma sökning med kommandot locate, ger det ingen utmatning.

Detta innebär att databasen locate söker i inte uppdaterades efter att filen skapades i systemet. Så låt oss uppdatera databasen, vilket kan göras med kommandot updatedb. Så här gör du:

sudo updatedb

Och när jag nu kör samma locate-kommando igen visar det filer i utmatningen:

Samma sak, efter att en fil eller katalog har tagits bort, måste du se till att locate-databasen har uppdaterats, för annars kommer kommandot att fortsätta att visa filen i utmatningen när den söks.

Hur man får locate att skriva ut antal eller antal matchande poster i utmatningen

Som vi har sett producerar kommandot locate namnet på de matchade filerna tillsammans med deras fullständiga eller absoluta sökvägar i utmatningen. Men om du vill kan du få verktyget att undertrycka all denna information och bara skriva ut antalet eller antalet matchande poster i stället. Detta kan göras med kommandoradsalternativet -c.

Hur man tvingar locate att bara skriva ut de poster som motsvarar befintliga filer

Som vi redan har diskuterat tidigare i den här artikeln, om en fil tas bort från systemet, så kommer kommandot att fortsätta att visa det filnamnet i utdata tills du uppdaterar locate-databasen igen. För detta specifika fall kan du dock hoppa över uppdateringen av databasen och ändå få korrekta resultat i utdata med hjälp av kommandoradsalternativet -e.

Till exempel tog jag bort filen ”filetosearch.txt” från mitt system. Detta bekräftades av kommandot find, som inte längre kunde söka i filen:

Men när jag utförde samma operation med hjälp av locate visade den fortfarande filen i utdata:

Och vi vet varför – för att locates databas inte uppdaterades efter det att filen togs bort. Att använda alternativet -e gjorde dock susen:

Här är vad man-sidan för locate säger om detta alternativ: ”

Hur du får locate att ignorera skillnader mellan stor- och små bokstäver

Som standard är sökoperationen som locate-kommandot utför skiftlägen känslig för stor- och små bokstäver. Men du kan tvinga verktyget att ignorera skillnader mellan stor- och små bokstäver med hjälp av kommandoradsalternativet -i.

Till exempel har jag två filer på mitt system som heter ”newfiletosearch.txt” och ”NEWFILETOSEARCH.txt”. Så som du kan se är filnamnen samma, bara att deras bokstäver är olika. Om du ber locate att söka efter, låt oss säga, ”*tosearch*”, kommer det bara att visa det lilla namnet i utmatningen:

Men om du använder kommandoradsalternativet -i tvingas kommandot att ignorera storleken, och båda filnamnen produceras i utmatningen:

Hur man separerar utdataposter med ASCII NUL

Som standard separeras de utdataposter som locate-kommandot producerar med hjälp av ett newline-tecken (\n). Men om du vill kan du ändra separatorn och ha ASCII NUL i stället för en nyrad. Detta kan göras med hjälp av kommandoradsalternativet -0.

Till exempel har jag utfört samma kommando som vi använde i det sista avsnittet ovan, men lagt till kommandoradsalternativet -0:

Så kan du se att separatorn för newline inte längre finns där – den har ersatts med NUL.

Hur man visar information om locate-databasen

Om du vill veta vilken databas locate använder, samt annan statistik om databasen, kan du använda kommandoradsalternativet -S.

Hur man söker efter ett exakt filnamn med hjälp av locate

När du söker efter ett filnamn med hjälp av locate ersätts som standard namnet du anger – säg NAME – implicit med *NAME*. Om jag till exempel söker efter ett filnamn ”testfile”, så produceras alla namn som matchar *testfile* i utdata:

Men vad händer om kravet är att söka efter filer med namn som exakt matchar ”testfile”? Då måste du använda reguljära uttryck, som kan aktiveras med kommandoradsalternativet -r. Så här kan du söka efter just ”testfile” med hjälp av reguljära uttryck:

locate -r /testfile$

Om du är nybörjare på reguljära uttryck kan du läsa mer här.

Slutsats

Locate erbjuder många fler alternativ, men de som vi diskuterade här borde räcka för att ge dig en grundläggande uppfattning om kommandoradsverktyget, samt för att du ska kunna komma igång. Vi rekommenderar att du först prövar alla de alternativ som beskrivs här på din Linux-maskin och sedan går över till andra alternativ som du hittar i verktygets man-sida.

Lämna ett svar

Din e-postadress kommer inte publiceras.