#find #search #linux #debian #ubuntu #bash
Met gewoon ``find`` gaat het find commando je #recursief alle files laten zien
Met ``find /tmp 2>/dev/null`` kun je de directory /tmp doorzoeken, zonder foutmelding. Vaak krijg je ``permission denied`` errors op directories waar je geen permissies voor hebt. Die foutmeldingen omzeil hiermee.
In #AIX was de ``-print`` actie nodig. Dit is in Linux niet nodig.
Zie ook [[Delete files via inodenumber in AIX]]
Met ``find ~/ -name a.txt`` zoek je in je homedirectory naar a.txt
Wil je wildcards gebruiken, dan moet je quotes gebruiken:
``find . -name "*.txt"``
Met ``find . -name "*.[ch]"`` Zoek je naar bestanden met, zowel de extentie c OF h.
Met ``find . -name "*.[sS]"`` Zoek je naar bestanden met, zowel de extentie s OF S.
Normaliter geeft het find command files en directories weer. Stel, je bent op zoek naar specifiek een directory: ``find /-name local -type d 2>/dev/null``
In Linux kun je met het `-type` argument in `find` specifieke bestandstypen filteren. Hier zijn de belangrijkste types:
- **`-type f`** → Gewone bestanden (files)
- **`-type d`** → Directories (mappen)
- **`-type l`** → Symbolische links (symlinks)
- **`-type c`** → Character devices (zoals `/dev/null`)
- **`-type b`** → Block devices (zoals `/dev/sda`)
- **`-type p`** → Named pipes (FIFO bestanden)
- **`-type s`** → Sockets (zoals `/var/run/docker.sock`)
Je kunt deze opties combineren met andere `find`-parameters om gericht te zoeken. Bijvoorbeeld:
`find /dev -type b`
Dit geeft een lijst van alle block devices in `/dev`.
Wil je bijvoorbeeld alle symbolische links met de naam `config` zoeken, dan doe je:
`find / -name config -type l 2>/dev/null`
Met ``find . -path 'sched/core.c'`` Kun je zoeken naar een pad.
Maar ook het volgende kan:
![[Pasted image 20250212143343.png]]
Stel, dat je hardeschijf volloopt. Dit kun je bijvoorbeeld zien met ``du =sh``
Met find, kun je ook vinden welke bestanden nu zoveel ruimte innemen.
Met ``find -size +10M`` krijg je alle bestanden groter dan 10MB. Met ``find -size -10M`` zie je alles kleiner dan 10MB.
Let Op! Je ziet alleen de filenames en waar ze staan.
Daar komt het volgende commando van pas:
``find -size +10M -printf "File: %p\n, Size: %s\n"``
![[Pasted image 20250212144250.png]]
Je ziet overigens de grootte van bestanden in bytes. Niet superhandig dus.
``find / -size +10M -printf "%p %s\n" | awk '{printf "File: %s, Size: %.2f MB\n", $1, $2/1048576}'``
Hieronder ongeveer hetzelfde, maar dan gesorteerd van grootste naar kleinste bestand:
``find / -size +10M -printf "%s %p\n" | sort -nrk1 | awk '{printf "File: %s, Size: %.2f MB\n", $2, $1/1048576}'``
Met onderstaand commando tel je de MB's op, van alle files groter dan 10MN en zie je
``expr \ $(find -size +10M -printf "%s + ") @ \) / \ 1024 \* 1024 \)``