home       inleiding       sysadmin       services       links       bash       werk       nothing      

find

De utility find wordt gebruikt om bestanden te vinden.
Meestal gebruikt met de volgende syntax:
 
$ find <zoek-directory> -iname <zoekstring>
 
voorbeeld:

$ find /usr/share -iname "*.doc"
/usr/share/doc/dictd/security.doc
/usr/share/cvs/contrib/intro.doc

De optie -iname zoekt niet hoofdlettergevoelig.
Er zijn vele andere opties,
hieronder enkele belangrijke opties met voorbeelden:
 
-name zoekt hoofdlettergevoelig

$ find /usr/share -name "*JPG"
/usr/share/games/supertuxkart/data/tracks/jungle/statue.JPG
/usr/share/games/supertuxkart/data/tracks/overworld/door.JPG

 
-type d vindt alleen directories

$ find /boot -type d
/boot
/boot/grub
/boot/grub/locale
/boot/grub/i386-pc
/boot/grub/fonts

 
-type f vindt alleen files
 
-type l vindt alleen symbolic links

$ find /etc/network -type l
/etc/network/if-post-down.d/avahi-daemon
/etc/network/if-post-down.d/wpasupplicant
/etc/network/if-down.d/wpasupplicant
/etc/network/if-up.d/wpasupplicant
/etc/network/run
/etc/network/if-pre-up.d/wpasupplicant

 
-perm 600 vindt files met permissions rw-------

$ find /etc/NetworkManager -type f -perm 600
/etc/NetworkManager/system-connections/TelenetWiFree
/etc/NetworkManager/system-connections/bbox2-9340
/etc/NetworkManager/system-connections/telenet-C8B32
/etc/NetworkManager/system-connections/BenQ
/etc/NetworkManager/system-connections/MacBook Pro van Charlotte
/etc/NetworkManager/system-connections/bbox2-6bdc

 
-size +10M vindt files groter dan 10 Megabyte

$ find / -type f -size +10M 2>/dev/null
/home/bert/PacketTracer62Student/lib/libQtGui.so.4.8.2
/home/bert/PacketTracer62Student/lib/libQtWebKit.so.4.9.2
/home/bert/PacketTracer62Student/PacketTracer6.2.tar.gz
/home/bert/PacketTracer62Student/bin/PacketTracer6
/home/bert/.linuxmint/mintMenu/apt.cache
/home/bert/.mozilla/firefox/mwad0hks.default/places.sqlite
/home/bert/.mozilla/firefox/mwad0hks.default/webappsstore.sqlite
/home/bert/SSDguru/SSDGuru/linux64/SSDGuru
/home/bert/SSDguru/SSDGuru/linux32/SSDGuru

de achteraan toegevoegde 2>/dev/null verwijdert de error messages uit de scherm-output.
Die error messages krijg je omdat je find uitvoert als gewone gebruiker, en bijgevolg niet altijd genoeg rechten hebt om bepaalde files of directories te mogen onderzoeken:

find: `/etc/ssl/private': Permission denied
find: `/etc/ppp/peers': Permission denied
find: `/etc/cups/ssl': Permission denied
find: `/etc/chatscripts': Permission denied

  
-user jonas vindt files die eigendom zijn van jonas
 
-group users vindt files van de groep "users"

alle zoekopties kunnen met mekaar worden gecombineerd.
 

de optie -exec

 
De optie -exec voert commando's uit op individuele resultaten van find. De tussenresultaten worden voorgesteld door {} -- de commandostring wordt afgesloten met de combinatie \;
 
Enkele voorbeelden:
 
$ find /usr/share/doc -iname "*txt" -exec ls -l {} \;

-rw-r--r-- 1 root root 3862 Jan 28  2015 /usr/share/doc/bluez/agent-api.txt
-rw-r--r-- 1 root root 778 May 31  2011 /usr/share/doc/bluez/sap-api.txt
-rw-r--r-- 1 root root 1824 May 23  2010 /usr/share/doc/bluez/service-api.txt
-rw-r--r-- 1 root root 2371 Jun 13  2012 /usr/share/doc/bluez/hfp-api.txt
-rw-r--r-- 1 root root 972 Jun 13  2012 /usr/share/doc/bluez/control-api.txt
-rw-r--r-- 1 root root 1039 May 23  2010 /usr/share/doc/bluez/input-api.txt
-rw-r--r-- 1 root root 2027 May 23  2010 /usr/share/doc/bluez/manager-api.txt

In het voorbeeld hierboven worden alle bestanden gezocht die eindigen op txt (niet hoofdlettergevoelig), en het resultaat wordt dan met ls-l op scherm gebracht.
 
$ find /usr/share/doc -iname "*txt" -exec ls -l {} \; -exec cat {} \;
 
Het voorbeeld hierboven brengt eerst een ls -l net zoals het eerste voorbeeld, maar brengt daarna ook nog eens dit bestand in zijn geheel op scherm met het commando cat.

 
$ find /usr/share/doc -iname "*txt"
          -exec ls -l {} \; -exec cat {} \; > find.txt
 
(alles op één regel) .. Doet hetzelfde als het tweede voorbeeld maar redirect het resultaat naar een bestand met als naam find.txt in de huidige directory.

nuttige links

tecmint: 35-practical-examples-of-linux-find-command
25 simple examples of Linux find command