Ga naar inhoud

πŸ” Het find Commando in Linux

In deze handleiding leer je hoe je find gebruikt op een Linux-systeem.

Het commando find wordt gebruikt om bestanden en mappen te zoeken op basis van verschillende criteria zoals naam, type, grootte of wijzigingsdatum.
Het is een krachtig hulpmiddel voor het doorzoeken van het bestandssysteem, zowel interactief als in scripts.

Achtergrondinformatie

Het commando find is standaard aanwezig op vrijwel alle Unix/Linux-systemen.

  • find doorzoekt directorystructuren recursief.
  • Je kunt zoeken op naam, type, permissies, grootte, wijzigingsdatum en meer.
  • In de praktijk wordt find vaak gebruikt in combinatie met andere commando’s via pipes (|) of in scripts voor automatisering.

Controleren of find aanwezig is

Het find-commando staat bijna altijd standaard op je systeem geΓ―nstalleerd.

Wil je controleren of find aanwezig is, dan kun je de versie opvragen:

find --version
Voorbeeldoutput
find (GNU findutils) 4.9.0
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.

βš™οΈ Installeren van find

Het commando find maakt deel uit van het pakket findutils.
Daarom is het op vrijwel alle Linux-distributies standaard geΓ―nstalleerd, inclusief Debian en Ubuntu.

Installatie op Debian/Ubuntu:

sudo apt update
sudo apt install findutils

Voorbeeldoutput
find (GNU findutils) 4.9.0
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

Hieronder vind je enkele veelgebruikte combinaties van het find-commando:

  • find /pad/ -name bestand.txt β†’ Zoek naar een specifiek bestand
Voorbeeld gebruik van find /pad/ -name bestand.txt

Commando:

find /home/user/documents -name bestand.txt
Voorbeeldoutput:
/home/user/documents/backup/bestand.txt

  • find /pad/ -type d β†’ Zoek naar directories
  • find /pad/ -type f β†’ Zoek naar reguliere bestanden
  • find /pad/ -size +10M β†’ Zoek bestanden groter dan 10 MB
  • find /pad/ -mtime -7 β†’ Zoek bestanden gewijzigd in de laatste 7 dagen
  • find /pad/ -name "*.log" -exec rm -f {} \; β†’ Verwijder alle .log bestanden
  • find /pad/ -perm 644 β†’ Zoek bestanden met specifieke permissies
  • find /pad/ -user username β†’ Zoek bestanden van een specifieke gebruiker
  • find /pad/ -group groupname β†’ Zoek bestanden van een specifieke groep
  • find /pad/ -empty β†’ Zoek lege bestanden en lege directories

Het find-commando heeft weinig configuratie, maar je kunt aliassen maken voor veelgebruikte zoekopdrachten.

1. Per gebruiker instellen

Voeg dit toe aan ~/.bashrc:

alias findlogs='find /var/log -name "*.log"'

2. System-wide instellen

Plaats dezelfde alias in /etc/bash.bashrc of /etc/profile

Logging van het find-commando

Het find-commando schrijft zelf geen logbestanden weg.
Wil je gebruik van find monitoren, dan kan dat met auditd.

Voorbeeld auditd regel

sudo auditctl -w /usr/bin/find -p x -k find_monitor
  • -w /usr/bin/find β†’ bewaak het bestand find
  • -p x β†’ log bij uitvoeren
  • -k find_monitor β†’ tag voor herkenning

Logs bekijken:

ausearch -k find_monitor

Of rechtstreeks in:

less /var/log/audit/audit.log

Updaten van find

Het find-commando maakt deel uit van findutils.
Update het pakket via de package manager van je distributie.

Voorbeeld (Debian/Ubuntu):

sudo apt update
sudo apt install --only-upgrade findutils

Verwijderen van find

Het find-commando kan verwijderd worden, maar dit kan scripts of workflows beΓ―nvloeden die afhankelijk zijn van bestandssysteemzoekopdrachten.

Voorbeeld (Debian/Ubuntu):

sudo apt remove findutils

πŸ“– Handleiding

De ingebouwde handleiding van Linux-commando’s is altijd beschikbaar via man.
Voor find:

man find
Voorbeeld
FIND(1)                     User Commands                     FIND(1)

NAME
       find - search for files in a directory hierarchy

SYNOPSIS
       find [path...] [expression]

DESCRIPTION
       Recursively descend the directory tree for each path, evaluating an expression for each file.