#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 \)``