Terug naar hoofdinhoud

Linux commando: find

14 juli 2026

Je weet dat een bestand ergens op de server staat. Misschien is het een configuratiebestand dat gisteravond is gewijzigd, een enorm logbestand dat de schijf vult, of alle .jpg bestanden die drie mappen diep zijn weggestopt. Het zou een uur duren om alle mappen door te klikken. Eén commando doorzoekt de hele boomstructuur voor je en vindt ze allemaal binnen enkele seconden, op naam, op grootte, op ouderdom, op wat dan ook: find.

1. De basis

De taak van find is om door een map en alles daarin te lopen, elk bestand en elke map een voor een te bekijken, en iets te doen met de exemplaren die bij je beschrijving passen. Die beschrijving kan een naam zijn, een grootte, een leeftijd, een type, een permissie, of meerdere daarvan gecombineerd.

De basisvorm van het commando is altijd hetzelfde: het woord find, een startplek om te zoeken, en dan een test die zegt waar je naar op zoek bent.

$ find /etc -name "hosts"
/etc/hosts

Hier is /etc waar de zoektocht begint, en -name "hosts" is de test. find daalt af door /etc en al zijn submappen, en toont het volledige pad van elk item dat hosts heet.

Twee dingen maken find anders dan een gewoon zoekvak. Ten eerste zoekt het op metadata, niet op inhoud: het werkt vanaf de naam, grootte, tijdstempel, eigenaar en het type die het bestandssysteem bijhoudt, dus het hoeft nooit een bestand te openen om te beslissen. (Voor het zoeken in bestanden is dat de taak van grep.) Ten tweede kan het iets doen met wat het vindt: het toont niet alleen paden, het kan ze verwijderen, kopieren, hun permissies wijzigen, of elk commando dat je maar wilt op elk exemplaar uitvoeren.

find zoekt niet alleen bestanden op; het loopt een boomstructuur af, toetst elk item aan een beschrijving, en doet dan iets met de exemplaren die slagen.

Het juiste mentale model: find is geen filter, het is een expressie-evaluator die een boomstructuur afloopt. Voor elk bestand dat het tegenkomt, werkt het je tests van links naar rechts af en vraagt "past deze?" Al het andere, de tientallen opties, is slechts een rijkere manier om de match te beschrijven en om te zeggen wat er gebeurt als die slaagt.

Naar boven

2. Waar komt de naam vandaan?

Anders dan zijn cryptische buren grep, awk en sed, is de naam find geen acroniem of binnenpretje. Het is gewoon het gewone Engelse werkwoord voor "vinden". De vroege Unix-auteurs, die van korte namen hielden, konden deze niet veel korter maken, dus lieten ze het als het gewone woord voor de gewone taak: dingen vinden.

Er is toch een kleine kanttekening die het weten waard is. De naam suggereert dat het gereedschap bestanden alleen opzoekt, maar dat doet het tekort. Vanaf het prille begin kon find ook een commando op elke match uitvoeren. Een betere manier om de naam te lezen is dus "vind elk bestand dat past, en doe hier dan dit mee". In die tweede helft zit het meeste van zijn kracht.

Lees het commando als een zin: find WAAR WAT-TE-MATCHEN WAT-TE-DOEN. Begin hier, match bestanden zo, doe er dan zo iets mee. Zodra je die vorm ziet, wordt elk find-commando makkelijk te lezen.

Naar boven

3. Een korte geschiedenis

find is een van de oudste gereedschappen in Unix. Het verscheen in Version 5 Unix rond 1974 bij Bell Labs, in dezelfde vroege periode die grep en de shell voortbracht. Vanaf het begin combineerde het twee ideeen die voor die tijd ongewoon waren: het liep een boomstructuur recursief af, en het liet je een actie (-exec) koppelen om op elk gevonden bestand uit te voeren. Die combinatie maakte er een kleine automatiseringsmachine van, niet zomaar een zoekgereedschap.

Naarmate Unix zich verspreidde, leverde elke leverancier zijn eigen find, en de tests dreven uit elkaar. POSIX standaardiseerde later een gemeenschappelijke kern zodat een eenvoudig find-commando overal hetzelfde werkt. Op Linux is de versie die je daadwerkelijk draait GNU findutils, die veel gemakken bovenop de POSIX-basis toevoegt, zoals -maxdepth, -delete en de veilige -print0-uitvoer.

TijdperkMijlpaal
~1974 find verschijnt in Version 5 Unix, al met recursief aflopen en -exec
jaren 80 Elke Unix-leverancier levert zijn eigen find; de tests lopen langzaam uiteen
jaren 90 POSIX standaardiseert een gemeenschappelijke kern; GNU findutils wordt de Linux-versie
GNU-tijdperk GNU voegt -print0 en xargs -0 toe om bestandsnamen met spaties en regeleindes veilig te verwerken
Vandaag GNU find is de standaard op Linux; snellere herimplementaties zoals fd en bfs bestaan

Het GNU-idee van -print0 is het apart benoemen waard. Bestandsnamen op Linux mogen spaties en bijna elk teken bevatten, wat vroeger scripts brak die de uitvoer op spaties opsplitsten. GNU loste het op door find de resultaten te laten scheiden met een onzichtbare nulbyte, die geen enkele bestandsnaam kan bevatten. Daarom werd find ... -print0 | xargs -0 het standaard veilige patroon, en het begon hier.

De BSD-find die met macOS meekomt, lijkt erop maar is niet identiek. De meeste alledaagse commando's werken hetzelfde; de verschillen duiken op bij minder gangbare opties, die de secties hieronder aanwijzen waar ze ertoe doen.

Naar boven

4. Eenvoudige toepassingen

4.1 Het eenvoudigste gebruik

Geef find een startmap en verder niets. Het toont elk bestand en elke map eronder, een volledig pad per regel:

$ find /etc/ssh
/etc/ssh
/etc/ssh/sshd_config
/etc/ssh/ssh_config
/etc/ssh/ssh_host_rsa_key

Bij GNU find mag je het pad zelfs weglaten, en dan zoekt het standaard in de huidige map .:

$ find
.
./notes.txt
./sub
./sub/report.pdf

Deze kale lijst is al nuttig, maar het punt van find is om die met een test te versmallen.

4.2 Zoeken op naam

De test -name toetst de naam van het bestand aan een patroon. Het patroon gebruikt shell-jokertekens (* voor willekeurige tekens, ? voor een enkel teken), geen reguliere expressies. Zet het patroon altijd tussen aanhalingstekens zodat de shell het onaangeroerd aan find doorgeeft:

$ find /var/www -name "*.php"
/var/www/index.php
/var/www/admin/login.php

Om hoofdletters te negeren, gebruik je -iname (kort voor insensitive name). Dit is de versie die je pakt als je niet zeker weet hoe een bestand met hoofdletters is geschreven:

$ find . -iname "readme*"
./README.md
./docs/readme.txt

4.3 Zoeken op type

De test -type beperkt de resultaten tot een soort item. De twee die je het meest gebruikt zijn f voor een gewoon bestand (file) en d voor een map (directory):

$ find /var/log -type f -name "*.log"
/var/log/syslog
/var/log/nginx/access.log

Hier zorgt -type f ervoor dat een map die toevallig iets.log heet, er niet bij zit. De volledige lijst met typeletters:

LetterType
f Gewoon bestand
d Map
l Symbolische link
b / c Block- of character-apparaat
p / s Named pipe (FIFO) of socket

4.4 Beperk hoe diep je zoekt

Standaard daalt find de hele boomstructuur af, hoe diep die ook gaat. De optie -maxdepth (kort voor maximum depth) stopt het na een ingesteld aantal niveaus. De startmap is diepte 0, de directe inhoud is diepte 1, enzovoort:

$ find . -maxdepth 1 -type f
./notes.txt
./config.yml

Dit toont alleen de bestanden in de huidige map, zonder in submappen te duiken. Zijn partner -mindepth (kort voor minimum depth) doet het tegenovergestelde en slaat de ondiepe niveaus over. Zet deze opties voor de tests; GNU find waarschuwt als ze later komen.

Naar boven

5. Gemiddelde toepassingen

5.1 Zoeken op grootte

De test -size vindt bestanden op hoe groot ze zijn, en zo spoor je op wat een schijf volzet. Voeg een achtervoegsel toe voor de eenheid: c voor bytes, k voor kilobytes, M voor megabytes en G voor gigabytes. Een voorafgaande + betekent "groter dan" en een voorafgaande - betekent "kleiner dan":

$ find /var -type f -size +100M
/var/log/journal/system.journal
/var/backups/db-dump.sql

Dit toont elk bestand groter dan 100 megabyte. Gecombineerd met een sortering wordt het een snel rapport van "wat vreet mijn schijf op", waarop de pipelines in sectie 6 voortbouwen.

5.2 Zoeken op tijd

Dit is een van de nuttigste en meest verkeerd begrepen onderdelen van find. De test -mtime (kort voor modification time) toetst op de dag waarop de inhoud van een bestand voor het laatst is gewijzigd, geteld in blokken van 24 uur. Het getal werkt net als bij grootte: -mtime -7 betekent "minder dan 7 dagen geleden gewijzigd", +7 betekent "meer dan 7 dagen geleden", en een kale 7 betekent "precies 7 dagen geleden".

$ find /etc -mtime -1
/etc/hosts
/etc/passwd

Dit vindt de configuratiebestanden die in de afgelopen dag zijn gewijzigd, precies wat je wilt na "er is iets veranderd en nu is het kapot". Voor fijnere controle gebruikt -mmin (kort voor modification minutes) minuten in plaats van dagen:

$ find /tmp -mmin -30 -type f     # files touched in the last half hour

Er zijn twee verwante tests: -atime voor wanneer een bestand voor het laatst is gelezen (access time) en -ctime voor wanneer de metadata voor het laatst is gewijzigd (change time, zoals een hernoeming of een permissiewijziging).

5.3 Tests combineren

Als je meerdere tests naast elkaar schrijft, verbindt find ze met een onzichtbare "en". Elke test moet slagen voordat een bestand past:

$ find /var/www -type f -name "*.log" -size +10M
/var/www/app/storage/laravel.log

Om in plaats daarvan "of" te zeggen, gebruik je -o (kort voor or). Omdat "en" sterker bindt dan "of", zet je de alternatieven tussen geescapete haakjes zodat de groepering duidelijk is:

$ find . -type f \( -name "*.jpg" -o -name "*.png" \)
./logo.png
./photos/beach.jpg

De backslashes voorkomen dat de shell de haakjes als zijn eigen syntaxis behandelt. Je kunt een test ook ontkennen met ! of het beter leesbare -not:

$ find . -type f -not -name "*.txt"     # every file that is NOT a .txt

5.4 Andere veelgebruikte tests

Een handvol tests dekt de meeste overige dagelijkse behoeften:

TestVindt
-empty Lege bestanden en lege mappen
-user peter Bestanden die eigendom zijn van gebruiker peter
-group www-data Bestanden die tot een groep behoren
-newer ref.txt Bestanden die recenter zijn gewijzigd dan ref.txt
-path "*/cache/*" Toets tegen het hele pad, niet alleen de naam

5.5 Zoeken op permissie

De test -perm vindt bestanden op hun permissiebits, maar het heeft drie modi, en die door elkaar halen is een klassieke bron van "waarom matchte dat niets?". Het verschil is een enkel voorafgaand teken:

VormBetekenis
-perm 644 Precies deze bits, niet meer en niet minder
-perm -0002 Alle van deze bits staan aan (andere bits mogen ook)
-perm /6000 Elk van deze bits staat aan

Voor beveiligingscontroles wil je bijna altijd de --vorm, omdat het je erom gaat of een bit aanstaat, niet of de hele modus precies klopt. Zo controleer je de twee dingen die op een server het waken waard zijn, wereldschrijfbare bestanden en SUID-programma's:

$ find /var/www -type f -perm -0002     # world-writable: anyone can edit these
/var/www/uploads/old.php

$ find /usr/bin -perm -4000             # SUID: these run as their owner, often root
/usr/bin/passwd
/usr/bin/sudo

Een kale -perm 777 zou alleen bestanden matchen waarvan de bits precies rwxrwxrwx zijn, dus het mist een wereldschrijfbaar bestand dat bijvoorbeeld ook de SUID-bit heeft. De -0002-vorm vangt elk bestand dat de wereld kan schrijven, wat je eigenlijk bedoelde.

Naar boven

6. Geavanceerde toepassingen

6.1 Een commando op elke match uitvoeren met -exec

De echte kracht van find is -exec, dat een commando uitvoert op elk bestand dat het vindt. Binnen het commando staat de plaatshouder {} voor het huidige bestand, en het commando eindigt met een geescapete puntkomma \;:

$ find . -name "*.tmp" -exec rm {} \;

Dit voert rm een keer uit voor elk .tmp-bestand. Dat werkt, maar per bestand een nieuw proces starten is traag als het er duizenden zijn. De +-vorm lost dit op: het verzamelt zoveel bestanden als er passen en geeft ze aan een enkel commando, precies zoals xargs doet:

$ find . -name "*.tmp" -exec rm {} +     # one rm for many files, much faster

Gebruik \; als het commando de bestanden een voor een moet zien, en + als het commando een lijst accepteert en je snelheid wilt. Er is ook -execdir, dat het commando uitvoert vanuit de eigen map van elk bestand. Dat is veiliger tegen streken van rare padnamen, en het is de betere keuze in scripts.

6.2 Bevestig voor je iets doet, en verwijder veilig

Voor gevaarlijke acties werkt -ok als -exec, maar het vraagt je om elk bestand te bevestigen voordat het draait:

$ find . -name "*.bak" -ok rm {} \;
< rm ... ./old.bak > ?

GNU find heeft ook een ingebouwde -delete die matches verwijdert zonder ook maar rm te starten. Het is handig maar onverbiddelijk, dus bouw het commando eerst als een zoekopdracht, bekijk de uitvoer, en wissel pas dan -print voor -delete:

$ find . -name "*.tmp" -print      # LOOK first
$ find . -name "*.tmp" -delete     # then delete, once you trust the list

6.3 De veilige pijp: -print0 en xargs -0

find in een ander gereedschap pijpen is gangbaar, maar een gewone pijp splitst op spaties en regeleindes, dus een bestand met de naam my report.pdf breekt in tweeen. De oplossing is het nulgescheiden paar: -print0 eindigt elk resultaat met een onzichtbare nulbyte in plaats van een regeleinde, en xargs -0 leest datzelfde scheidingsteken:

$ find . -name "*.log" -print0 | xargs -0 gzip

Geen enkele bestandsnaam kan een nulbyte bevatten, dus dit verwerkt spaties, aanhalingstekens en regeleindes zonder een enkele verrassing. Maak het je standaard telkens als find een ander commando via een pijp voedt.

6.4 Snoeien: hele takken overslaan

Soms wil je dat find een hele map vermijdt, zoals .git of node_modules, zodat het geen tijd verspilt door erin te lopen. De actie -prune vertelt find "daal hier niet in af". Het patroon leest eerst wat vreemd maar is het onthouden waard:

$ find . -path "*/node_modules" -prune -o -name "*.js" -print
./src/app.js
./src/util.js

Lees het als: als het pad een node_modules-map is, snoei die (sla de inhoud over); anders, als de naam op .js eindigt, toon die. De expliciete -print aan het eind is hier nodig, want zodra je een actie zoals -prune gebruikt, toont find niet langer automatisch.

6.5 Matchen met echte reguliere expressies

Als shell-jokertekens niet genoeg zijn, toetst -regex het hele pad aan een reguliere expressie. Let op dat het het volledige pad toetst, niet alleen de naam, dus houd rekening met de voorafgaande mappen:

$ find . -regextype posix-extended -regex ".*/[0-9]{4}-[0-9]{2}-[0-9]{2}\.log"
./logs/2026-07-11.log

De optie -regextype kiest het dialect; posix-extended gedraagt zich als grep -E. Dit is een GNU-functie, dus vermijd het in scripts die ook op macOS of BSD moeten draaien.

Standaard kijkt find naar de symbolische link zelf, niet naar het bestand waar die naar wijst, en het loopt nooit door een link heen een andere map in. Drie opties, geplaatst voor het pad, veranderen dit:

OptieGedrag
-P Volg symlinks nooit (de standaard)
-L Volg symlinks altijd en zoek waar ze naar wijzen
-H Volg alleen de links die je op de commandoregel noemt, niet die je tijdens het lopen tegenkomt
$ find -L /var/www -name "*.php"     # follow links into shared folders too

Omdat -type l een link matcht door naar de link zelf te kijken, kan het niet zien of het doel nog bestaat. Gebruik daarvoor -xtype l (kort voor het type na het volgen van de link), dat links meldt waarvan het doel ontbreekt. Het is de snelle manier om kapotte symlinks op te sporen nadat bestanden zijn verplaatst of verwijderd:

$ find /var/www -xtype l
/var/www/current
/var/www/logs/latest.log
Naar boven

7. Wat de meeste gebruikers niet weten

7.1 De volgorde van tests is de snelheid van find

find evalueert je tests strikt van links naar rechts en stopt zodra het antwoord vaststaat, precies zoals && in een shell. Dit betekent dat de volgorde waarin je tests schrijft verandert hoe snel het commando draait. Een goedkope test, zoals -name, leest alleen de maplijst. Een dure test, zoals -size of iets met -exec, moet naar het bestand zelf kijken. Zet de goedkope test eerst:

$ find . -name "*.log" -size +10M     # fast: only stats files already named *.log
$ find . -size +10M -name "*.log"     # slower: stats every file, then checks the name

Beide geven hetzelfde resultaat, maar de eerste versie inspecteert alleen de grootte van bestanden die de naamtest al hebben gehaald. Op een grote boomstructuur is het verschil echt.

Een find-commando is een keten van ja/nee-vragen die op volgorde worden gesteld. Stel de goedkoopste, meest selectieve vraag eerst, en find besteedt zijn moeite alleen aan de bestanden die die overleven.

7.2 Elke test is stiekem een expressie

Wat op een lijst met opties lijkt, is eigenlijk een kleine booleaanse taal. De impliciete "en" tussen tests is in werkelijkheid de operator -a; -o is "of"; ! is "niet"; en -print, -delete en -exec zijn geen instellingen maar acties die waar of onwaar teruggeven en een neveneffect hebben. Daarom toont find . -name "*.log" uberhaupt iets: als je geen actie schrijft, voegt find stilletjes -print voor je toe. Op het moment dat je je eigen actie toevoegt, verdwijnt die automatische -print, en dat is de reden dat het snoei-voorbeeld in sectie 6 een expliciete -print nodig had. Zodra je tests en acties als een expressie ziet, houden de lastigere commando's op magie te zijn.

7.3 Wat find echt leest: de inode

Toen sectie 1 zei dat find vanaf metadata werkt en nooit een bestand opent, is dit het mechanisme daarachter. Elk bestand op een Linux-bestandssysteem wordt beschreven door een inode, een klein record dat de eigenaar, de permissiebits, de drie tijdstempels, de grootte, het aantal links en verwijzingen naar de datablokken bevat, maar niet de naam en niet de inhoud. Terwijl find een map afloopt, roept het readdir() aan om de namen op te sommen, en dan stat() of lstat() om elke inode te lezen. Tests zoals -size, -mtime, -perm en -user zijn slechts vragen die aan dat inode-record worden gesteld, en daarom zijn ze goedkoop en hoeft find nooit ook maar een byte van de data van het bestand te lezen.

Dit verklaart ook de snelheidsregel van eerder: een -name-test heeft alleen de maplijst nodig, terwijl -size een stat() op de inode afdwingt. Door de naamtest eerst te zetten, kan find de inode-opzoekingen overslaan die het niet nodig heeft.

7.4 Weten waar find ophoudt

Een deel van vakmanschap is weten welk gereedschap het overneemt als find aan zijn grens komt:

BehoefteGebruikWaarom
Zoeken in de inhoud van bestanden grep find matcht namen en metadata, niet wat er in het bestand staat
Een bestand direct op naam opzoeken locate Leest een vooraf gebouwde index, dus het antwoordt in een oogwenk maar kan verouderd zijn
De vorm van een map in een oogopslag zien tree Tekent de hierarchie visueel in plaats van een pad per regel
Dezelfde zoektocht, maar sneller en eenvoudiger fd / bfs Moderne herimplementaties met vriendelijkere syntaxis en parallel aflopen

Een gangbaar en krachtig team is find plus grep: gebruik find om te kiezen welke bestanden op naam, type of leeftijd, en geef ze dan aan grep om in ze te zoeken. Dat is wat find . -name "*.conf" -exec grep -l "debug" {} + doet.

Naar boven

8. Beste werkwijzen

  • Zet naampatronen altijd tussen aanhalingstekens. Schrijf -name "*.log", niet -name *.log, anders vult de shell de * in voordat find die ooit ziet.
  • Zet de goedkoopste test eerst. Begin met -name of -type zodat dure tests en -exec alleen draaien op bestanden die al matchten.
  • Bekijk eerst voordat je iets doet. Bouw het commando met -print, controleer de lijst, en verander het pas dan in -delete of -exec rm.
  • Geef de voorkeur aan -exec ... + boven -exec ... \; als het commando veel bestanden accepteert. Het draait veel minder processen en is veel sneller.
  • Gebruik -print0 | xargs -0 in pijpen. Het is de enige manier om bestandsnamen met spaties of regeleindes veilig te verwerken.
  • Beperk de diepte op grote bomen. -maxdepth en -prune voorkomen dat een zoektocht afdwaalt naar .git, node_modules of een aangekoppelde netwerkschijf.
  • Gebruik -quit om bij de eerste treffer te stoppen. Als je alleen hoeft te weten of er uberhaupt een match bestaat, laat -quit find stoppen zodra het er een vindt, in plaats van de hele boomstructuur af te lopen.
  • Voeg -type f toe als je bestanden bedoelt. Het voorkomt dat mappen en rare items binnensluipen in een resultaat dat je wilt verwijderen of wijzigen.

Als je alle details nodig hebt, is de documentatie een commando ver weg:

$ man find        # the full manual page
$ find --help     # a quick summary of every test and action
$ info find       # the long GNU manual with examples
Naar boven

9. Veelgemaakte fouten

9.1 Vier veelvoorkomende mythes

MytheWerkelijkheid
"-name neemt een reguliere expressie." Het neemt een shell-glob (*, ?). Voor echte regex gebruik je -regex.
"-mtime 7 betekent de laatste 7 dagen." Een kale 7 betekent precies 7 dagen geleden. "Binnen 7 dagen" is -mtime -7.
"find zoekt in bestanden." Het matcht alleen namen en metadata. Zoeken in de inhoud is de taak van grep.
"De volgorde van tests maakt niet uit." Volgorde bepaalt snelheid, en met -o en acties kan het het resultaat veranderen.

9.2 Andere valkuilen om te vermijden

  • Patronen zonder aanhalingstekens. Als de huidige map een bijpassend bestand bevat, vult de shell *.log in tot die naam en zoekt find naar het verkeerde. Zet het tussen aanhalingstekens.
  • De \; of + na -exec vergeten. Zonder de afsluiter meldt find een "missing argument"-fout. De puntkomma moet als \; worden geescaped.
  • -delete te snel draaien. Er is geen ongedaan maken. Toon altijd eerst de matches, en onthoud dat -delete stilletjes -depth impliceert, wat de loopvolgorde verandert.
  • -o mengen met acties en zonder haakjes. Verrassingen met bindingssterkte komen vaak voor; groepeer alternatieven in \( ... \) en voeg een expliciete -print toe als je ook een andere actie gebruikt.
  • Vanaf / zoeken zonder grenzen. Beginnen bij de wortel kan in /proc, /sys en netwerkmounts kruipen. Voeg -xdev toe om op een bestandssysteem te blijven, of begin ergens smaller.
  • Aannemen dat BSD en GNU overeenkomen. Opties zoals -regextype, -printf en -delete zijn GNU-extra's. Houd ze uit scripts die op macOS moeten draaien.
Naar boven

10. Samenvatting

Het commando find is hoe je bestanden op een Linux-systeem opspoort op elke eigenschap die ze hebben, en er dan in een stap iets mee doet.

  • find loopt een boomstructuur af en toetst elk item aan een beschrijving: naam, type, grootte, leeftijd, eigenaar of permissies.
  • De naam is het gewone Engelse werkwoord, maar het doet meer dan opzoeken: het kan elk commando op elke match uitvoeren.
  • Het mentale model is een expressie die luidt find WAAR WAT-TE-MATCHEN WAT-TE-DOEN, bestand voor bestand geevalueerd.
  • Alledaagse tests: -name/-iname (op naam), -type f of -type d (op soort), -size (op bytes), -mtime/-mmin (op leeftijd).
  • Tests verbinden met een impliciete "en"; gebruik -o, ! en \( \) om rijkere voorwaarden te bouwen.
  • -exec {} + voert snel een commando op de matches uit, en -print0 | xargs -0 pijpt ze veilig.
  • Zet je tests op volgorde van goedkoopst-eerst voor snelheid, en bekijk altijd eerst met -print voordat je -delete gebruikt.
  • Bij twijfel typ je man find of find --help.

Dit is de handige naslag om te bewaren:

find . -name "*.log"            files named *.log, from here down
find . -iname "readme*"         same, ignoring upper/lower case
find /var -type f -size +100M   regular files larger than 100 MB
find /etc -mtime -1             changed in the last day
find . -mmin -30                changed in the last 30 minutes
find . -type d -empty           empty directories
find . -maxdepth 1 -type f      files in this folder only, no descending
find . \( -name "*.jpg" -o -name "*.png" \)   match either pattern
find . -name "*.tmp" -delete    delete matches (preview with -print first)
find . -name "*.tmp" -exec rm {} +            run one rm for many files
find . -name "*.log" -print0 | xargs -0 gzip  safe pipe for odd names
find . -path "*/.git" -prune -o -name "*.py" -print   skip a whole folder
find . -name "*.conf" -exec grep -l "debug" {} +      find + grep together

Zodra find natuurlijk aanvoelt, houdt een Linux-server op dingen voor je te verbergen. Je kunt het bestand opsporen dat vannacht is gewijzigd, de rommel opruimen die een schijf volzet, en elk bijpassend bestand in een enorme boomstructuur met een enkele regel bereiken. Als jouw servers bestanden bevatten die iemand op schaal moet opsporen, opruimen of bewerken, is dat precies het soort werk waar ik bij help.

Naar boven
Linux commando: find
Peter Martin
Peter Martin
Joomla Specialist

Peter is Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.