Zoeken op website

Manieren om de opdracht 'find' te gebruiken om mappen efficiënter te doorzoeken


Deze tutorial neemt je mee door de verschillende manieren om een directory in Linux te vinden. Zoals je misschien al weet, is in Linux alles een bestand, inclusief mappen. En een van de meest voorkomende dingen die een Linux-gebruiker binnen de opdrachtregel doet, is zoeken naar een bestand of map.

Er zijn verschillende middelen en hulpprogramma's die worden gebruikt voor het zoeken naar bestanden op de opdrachtregel, zoals find, locate en welke. Het laatste hulpprogramma (welke) wordt echter alleen gebruikt voor het lokaliseren van een opdracht.

Voor de reikwijdte van deze tutorial zullen we ons voornamelijk concentreren op het hulpprogramma find, dat bestanden op een live Linux-bestandssysteem doorzoekt en efficiënter en betrouwbaarder is in vergelijking met locate.

Het nadeel van locate is dat het een of meer databases leest die zijn gemaakt door updatedb, het zoekt niet in een live bestandssysteem. Bovendien biedt het minder flexibiliteit met betrekking tot waar te zoeken (startpunt).

Hieronder vindt u de syntaxis voor het uitvoeren van de opdracht locate:

locate [option] [search-pattern]

Om het nadeel van locate aan te tonen, gaan we ervan uit dat we zoeken naar een map met de naam pkg in de huidige werkmap.

Opmerking: in het onderstaande commando vertelt de optie --basename of -b locate< om alleen de basisnaam van het bestand (map) (die precies pkg is) te matchen, maar niet het pad (/path/to/pkg). Waar \ een globing-teken is, wordt de impliciete vervanging van pkg door *pkg* uitgeschakeld.

locate --basename '\pkg'

Zoals je kunt zien aan de hand van de bovenstaande opdracht, zal locate zoeken vanaf de hoofdmap (/). Daarom worden andere mappen met dezelfde naam gematcht.

Om dit probleem op te lossen, gebruikt u daarom find door de onderstaande vereenvoudigde syntaxis te volgen:

find starting-point options [expression]

Laten we een paar voorbeelden bekijken.

Om naar dezelfde map (pkg) hierboven te zoeken, binnen de huidige werkmap, voert u de volgende opdracht uit, waarbij de vlag -naam de uitdrukking leest die in dit geval de map basisnaam.

find . -name "pkg"

Als u de foutmelding “Toestemming geweigerd” tegenkomt, gebruikt u de sudo-opdracht als volgt:

sudo find . -name "pkg"

U kunt voorkomen dat find naar andere bestandstypen zoekt, behalve mappen, door de vlag -type te gebruiken om het type bestand op te geven (in de onderstaande opdracht betekent d map) als volgt:

sudo find . -type d -name "pkg"

Als u bovendien de map in een lange lijstindeling wilt weergeven, gebruikt u de actieschakelaar -ls:

sudo find . -type d -name "pkg" -ls

Vervolgens zal de optie -iname een hoofdletterongevoelige zoekopdracht mogelijk maken:

sudo find . -type d -iname "pkg" 
sudo find . -type d -iname "PKG" 

Voor meer interessante en geavanceerde gebruiksinformatie leest u de manpagina's van find en locate.

man find
man locate

Als laatste opmerking: het find-commando is betrouwbaarder en efficiënter voor het zoeken naar bestanden (of mappen) op een Linux-systeem als het wordt afgewogen tegen het locate-commando.

Vergeet niet om ons, op dezelfde manier als voorheen, uw feedback of vragen te sturen via het commentaar hieronder. Blijf ten slotte altijd verbonden met Tecmint.