Linux Locate Command voor beginners (8 voorbeelden)

Hoewel find ongetwijfeld een van de populairste en krachtigste command-line programma’s is voor het zoeken naar bestanden in Linux, is het niet snel genoeg voor situaties waarin je onmiddellijk resultaat nodig hebt. Als je een bestand op je systeem wilt zoeken via de commandoregel, en snelheid is de hoogste prioriteit, dan is er een ander commando dat je kunt gebruiken: Locate.

In deze tutorial bespreken we het locate commando aan de hand van eenvoudig te begrijpen voorbeelden. Houd er rekening mee dat alle instructies / voorbeelden hier zijn getest op Ubuntu 16.04 LTS, en de locate versie die we hebben gebruikt is 0.26.

Hoe te gebruiken locate commando in Linux

Het locate commando is zeer eenvoudig te gebruiken.

locate 

Als ik bijvoorbeeld wil zoeken naar alle bestandsnamen met de string ‘dir2’ erin, dan kan ik dat met locate op de volgende manier doen:

Note: Het commando ‘locate dir2’ (zonder sterretjes) voldoet ook, omdat locate impliciet de naam die je doorgeeft (zeg NAME) vervangt door *NAME*.

Hoe het locate commando werkt, of, waarom is het zo snel

De reden dat locate zo snel is, is omdat het niet het bestandssysteem leest voor de naam van het gezochte bestand of de gezochte directory. In feite verwijst het naar een database (voorbereid door het commando updatedb) om te vinden wat de gebruiker zoekt en op basis van die zoekactie produceert het zijn uitvoer.

Hoewel dit een goede aanpak is, heeft het zijn deel van de nadelen. Het belangrijkste probleem is dat na het aanmaken van elk nieuw bestand of map op het systeem, de database van het programma moet worden bijgewerkt om correct te kunnen werken. Anders kan de opdracht geen bestanden/mappen vinden die na de laatste database-update zijn gemaakt.

Als ik bijvoorbeeld bestanden probeer te vinden met namen die de tekenreeks ’tosearch’ bevatten in de map ‘Downloads’ van mijn systeem, levert de opdracht find één resultaat op in de uitvoer:

Maar als ik dezelfde zoekopdracht probeer uit te voeren met de opdracht locate, levert dat geen uitvoer op.

Dit betekent dat de database waarin locate zoekt, niet is bijgewerkt nadat het bestand op het systeem is gemaakt. Laten we dus de database bijwerken, wat kan worden gedaan met het commando updatedb. Zo doe je dat:

sudo updatedb

En als ik nu hetzelfde locate commando opnieuw uitvoer, toont het bestanden in de uitvoer:

Ook nadat een bestand of een directory is verwijderd, moet je ervoor zorgen dat de locate database is bijgewerkt, omdat het commando anders het bestand blijft tonen in de uitvoer wanneer er in wordt gezocht.

Hoe locate het aantal overeenkomende items in de uitvoer te laten afdrukken

Zoals we hebben gezien, produceert het locate commando de naam van de overeenkomende bestanden samen met hun volledige of absolute paden in de uitvoer. Maar als je wil, kan je het programma al deze informatie laten onderdrukken, en in plaats daarvan gewoon het aantal of de telling van de overeenstemmende entries laten afdrukken. Dit kunt u doen met de opdrachtregeloptie -c.

Hoe locate dwingen om alleen regels af te drukken die overeenkomen met bestaande bestanden

Zoals we eerder in dit artikel al hebben besproken, blijft de opdracht die bestandsnaam weergeven in de uitvoer als een bestand van het systeem wordt verwijderd, totdat u de locate-database opnieuw hebt bijgewerkt. Voor dit specifieke geval kun je het bijwerken van de database overslaan, en toch correcte resultaten in de uitvoer krijgen met de -e commandoregeloptie.

Voorbeeld, ik verwijderde het ‘filetosearch.txt’ bestand van mijn systeem. Dit werd bevestigd door de opdracht find, die het bestand niet langer kon doorzoeken:

Maar toen ik dezelfde bewerking uitvoerde met locate, werd het bestand nog steeds weergegeven in de uitvoer:

En we weten waarom – omdat de database van locate niet was bijgewerkt nadat het bestand was verwijderd. Met de optie -e lukt het echter wel:

Hier staat wat de locate man page zegt over deze optie: “Druk alleen items af die verwijzen naar bestanden die bestaan op het moment dat locate wordt uitgevoerd.”

Hoe locate het onderscheid tussen hoofdletters en kleine letters te laten negeren

De zoekbewerking die de locate-opdracht uitvoert, is standaard hoofdlettergevoelig. Maar u kunt het gereedschap dwingen om hoofdletteronderscheid te negeren met de -i commandoregeloptie.

Voorbeeld, ik heb twee bestanden op mijn systeem, genaamd ‘newfiletosearch.txt’ en ‘NEWFILETOSEARCH.txt’. Dus, zoals je kunt zien, zijn de bestandsnamen hetzelfde, alleen dat hun hoofdletters verschillend zijn. Als u locate vraagt te zoeken naar, laten we zeggen, “*tosearch*”, dan zal het alleen de naam met kleine letters weergeven in de uitvoer:

Maar als u de opdrachtregeloptie -i gebruikt, wordt de opdracht gedwongen de hoofdletters te negeren en worden beide bestandsnamen weergegeven in de uitvoer:

Hoe uitvoergegevens scheiden met ASCII NUL

De standaardinstelling is dat de uitvoergegevens die de opdracht locate produceert, worden gescheiden met het teken newline (\n). Maar als je wilt, kun je het scheidingsteken veranderen, en de ASCII NUL gebruiken in plaats van een nieuwe regel. Dit kan worden gedaan met de opdrachtregeloptie -0.

Hierboven heb ik bijvoorbeeld hetzelfde commando uitgevoerd dat we in de vorige sectie hebben gebruikt, maar de opdrachtregeloptie -0 toegevoegd:

Zo kunt u zien dat het scheidingsteken tussen de newlines er niet meer is – het is vervangen door NUL.

Hoe informatie over de locate database te bekijken

In het geval dat u wilt weten welke database locate gebruikt, alsmede andere statistieken over de database, gebruikt u de -S command-line optie.

Hoe een exacte bestandsnaam te zoeken met locate

Als u met locate naar een bestandsnaam zoekt, wordt de naam die u opgeeft – zeg NAME – standaard impliciet vervangen door *NAME*. Als ik bijvoorbeeld zoek naar een bestandsnaam ’testfile’, dan worden alle namen die overeenkomen met *testfile* weergegeven in de uitvoer:

Maar wat als u bestanden wilt zoeken met namen die precies overeenkomen met ’testfile’? In dat geval moet u reguliere expressies gebruiken, die kunnen worden ingeschakeld met de opdrachtregeloptie -r. Zo kunt u met reguliere expressies zoeken naar alleen ’testfile’:

locate -r /testfile$

Als reguliere expressies nieuw voor u zijn, kijk dan hier.

Conclusie

Locate biedt nog veel meer opties, maar de opties die we hier hebben besproken, moeten genoeg zijn om u een basisidee te geven van het hulpprogramma voor de opdrachtregel, en om u op weg te helpen. We raden u aan om eerst alle hier beschreven opties uit te proberen op uw Linux machine, en dan over te schakelen naar andere die u kunt vinden in de man page van de tool.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.