Valid HTML 4.01! Valid CSS
Anybrowser

Navigatie:


Home - Linux beginners - Bestanden zoeken

logo

.



Home
Printbaar

Nieuws

Nieuwe distributie
Onlangs zijn we overgestapt op een nieuwe Linux-distributie, nl. Pardus Linux

Dit lijkt ons een prima distributie, zowel voor beginners als experts.



9. BESTANDEN ZOEKEN

Bestanden vinden

Als je intussen met de opdrachten cd en ls de directories en hun inhoud bekeken hebt, dan weet je, dat een Linux-systeem nogal wat bestanden bevat. Wat nu, als je een bepaald bestand zoekt en niet weet waar het te vinden is?
Linux zou Linux niet zijn, als daar ook niet een opdracht voor bestond; ja, zelfs meerdere opdrachten!
De bekendste is find. Dit is een zeer krachtige zoekopdracht (of moet ik zeggen: vindopdracht...), met tal van mogelijkheden, waar we hier maar een heel klein deeltje van bespreken.

Stel, dat je een bestand zoekt met de naam mkfontdir en je hebt geen idee, waar dat staat. Dan kun je het vinden met de opdracht:

find / -name mkfontdir

De computer zal wel even wat werk hebben aan de uitvoering van deze opdracht. En ook zul je tal van foutmeldingen te zien krijgen. Dit laatste komt, doordat je geen teogangsrechten hebt op bepaalde delen van je systeem (tenzij je als root ingelogd bent, maar dan krijg je die foutmeldingen ook niet...). Maar tussen de foutmeldingen komt ook de juiste plaats van je bestand tevoorschijn: /usr/X11R6/bin/mkfontdir (of een andere plaats, afhankelijk van je distributie e.d.).
Er is wel een manier om die foutmeldingen te vermijden:

find / -name mkfontdir 2>/dev/null

De uitleg van de toevoeging 2>/dev/null komt in een later artikel nog wel aan de orde, maar zorgt ervoor, dat de foutmeldingen niet meer op je scherm verschijnen.

Eerst maar eens wat uitleg over de opbouw van de opdracht:
Met de / wordt aangegeven, waar find moet beginnen met zoeken. In dit geval dus in de root-directory. find zal ook alle sub-directories daaronder doorzoeken. Vandaar, dat het even duurde voor de opdracht uitgevoerd was...
Als je weer, dat een bestand ergens onder een bepaalde directorie moet staan, kun je de zoekopdracht ook wat verfijnen. Zo moet het bestand killall ergens in de /etc-directory staan:

find /etc -name killall

Nu zal de uitvoering heel wat sneller gaan...

De optie -name geeft aan, dat find moet zoeken naar een bestand met een bepaalde naam. Er bestaan ook opties, die een bestand op datum of grootte zoeken, maar daarvoor mag je weer even in de man- of info-pages duiken...

Jokers

Maar wat nu, als je zelfs de naam van het bestand niet goed meer weet? Stel, je hebt een bestand gemaakt, waarin de naam van je broer Piet voorkwam, bv. briefpiet.txt, maar je weet de bestandsnaam niet meer. Dan kun je find ook niet vertellen naar welk bestand gezocht moet worden...

Ook daar bestaat een oplossing voor, nl. het gebruik van jokers. In ons voorbeeld zou je het bestand kunnen vinden met find / -name *piet*.
Een * is een joker, en geeft aan, dat er nul of meer willekeurige tekens i.p.v. dat sterretje mogen staan. Een ander joker-teken is ?, wat staat voor precies één teken.

Deze jokers zijn niet alleen te gebruiken in de find-opdracht, maar in bijna alle Linux-commando's

Nog meer vinden

Een andere opdracht om bestanden te vinden is locate. Met deze opdracht doorzoekt Linux een database-bestand, waarin alle bestanden en hun lokatie zijn opgenomen. Zo'n database-bestand moet natuurlijk regelmatig bijgewerkt worden. Dat gebeurt met de opdracht updatedb. Deze opdracht mag normaal gesproken alleen door root uitgevoerd worden (of gebruik su).
Met de opdracht locate txt wordt gezocht naar alle bestanden en directories waarin de letters txt voorkomen. Probeer maar eens, dan wordt het je snel duidelijk. Ook zul je merken, dat het zoeken (vinden) veel sneller gaat dan met find, doordat maar één bestand doorzocht moet worden.

kijk ook voor meer opties en bijzonderheden over deze opdrachten in de man- en info-pages.


Laatst herzien op 18-12-2006