Er zijn twee verschillende mogelijkheden om naar bestanden te zoeken: find en locate. find zoekt naar de werkelijke bestanden in hun huidige staat. locate doorzoekt een index die iedere morgen om 6:42 a.m. door het systeem wordt gegenereerd (dit is een cron job, elders in dit handboek uitgelegd ). locate zal geen bestanden kunnen vinden die werden aangemaakt nadat de index werd gegenereerd. Het is echter veel sneller, aangezien locate een index doorzoekt -- zoals het gebruik van een index in een boek in plaats van het doorzoeken van het gehele boek.
Doe alsof je je niet meer kunt herinneren waar het X configuratiebestand XF86Config voorkomt, om de twee manieren waarop er naar bestanden kan worden gezocht, met elkaar te vergelijken.
Dit zou tamelijk snel moeten gaan. Je zal een lijst met bestandsnamen krijgen waarin de string XF86Config voorkomt, vergelijkbaar met het volgende:
/etc/X11/XF86Config /usr/X11R6/lib/X11/XF86Config /usr/X11R6/lib/X11/XF86Config.eg /usr/X11R6/man/man5/XF86Config.5x.gz |
Je zal heel wat diskactivitiet horen, en dit zal heel wat langer duren. Het resultaat ziet er ongeveer zo uit:
/etc/X11/XF86Config /usr/X11R6/lib/X11/XF86Config find: /var/spool/cron/atjobs: Permission denied find: /var/spool/cron/atspool: Permission denied find: /var/lib/xdm/authdir: Permission denied |
Merk op dat find alleen bestanden vindt die exact XF86Config zijn genoemd, in plaats van dat het alle bestanden waarin deze reeks letters voorkomt, retourneert. Ook probeerde find echt iedere directory op het systeem te doorzoeken - inclusief die waarvoor je geen leespermissies hebt. Dus die welke de "Permission denied" meldingen opleverde.
Bovendien is de syntax anders. Je moest aangeven in elke directory moest worden gezocht --- / --- terwijl locate automatisch de root-directory koos. En je moest opgeven dat je op naam zocht, door de optie -name. Je zou ook naar bestanden hebben kunnen zoeken die aan veel andere kriteria voldoen, zoals de wijzigingsdatum of de eigenaar. Voor het met find zoeken naar bestanden wiens namen voldoen aan XF86Config, zou je een reguliere expressie hebben moeten gebruiken : find / -name '*XF86Config*'. Zoals met de meeste opdrachtregeltools accepteert find reguliere expressies als argumenten.
In het algemeen is find een krachtiger hulpmiddel en is locate sneller voor alledaagse snelle zoekopdrachten. Het volledige bereik aan mogelijke zoekopdrachten zou lange tijd in beslag nemen om uit te leggen: typ voor meer details info find, waarmee de zeer grondige info pages over find en locate te voorschijn worden gehaald.