Suchen und finden
find
find ab_wo_wird_gesucht was_wird_gesucht aktion find [Pfad] [Bedingung] [Aktion]
Nach Namen
find [Pfad] -name [Name]
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus
root@zero:~# find /home -name test -print /home/xinux/test /home/test
Wie oben, jedoch mit Namensanfang test
root@zero:/home/xinux# find /home -name 'test*' /home/xinux/testdatei /home/xinux/test /home/test
Nach Benutzer(Eigentümer)
root@zero:/tmp# find /tmp/ -user xinux /tmp/datei
Nach Gruppe
root@zero:/tmp# find /tmp/ -group hacker /tmp/datei3 /tmp/datei2
Nach Typ
Es wird nach Dateien anhand Ihrer Art gesucht:
find [Pfad] -type [Typ]
Typ:
- f: Normale Dateien
root@zero:~# find /tmp/ -type f /tmp/mbr.img /tmp/datei /tmp/zeugs /tmp/.X0-lock
- d: Verzeichnisse
root@zero:~# find /var/log -type d /var/log /var/log/apache2 /var/log/unattended-upgrades /var/log/apparmor /var/log/ConsoleKit /var/log/dist-upgrade /var/log/dist-upgrade/20090526-1052 /var/log/cups /var/log/apt /var/log/fsck /var/log/samba /var/log/samba/cores /var/log/samba/cores/smbd /var/log/samba/cores/nmbd /var/log/samba/cores/winbindd /var/log/installer /var/log/gdm /var/log/news
- c: Char Devices (Zeichenorientierte Gerätedatei)
root@zero:~# find / -type c /lib/udev/devices/kmem /lib/udev/devices/null /lib/udev/devices/console /lib/udev/devices/ppp /lib/udev/devices/net/tun
- b: Block Devices (Blockorientierte Gerätedatei)
- p: Benannte Pipe
- l: Links
- s: Sockets
Nach Permissions
root@cardassia:~# find /usr/bin/ -perm +4000 -exec ls -l {} \;
-rwsr-xr-x 1 root root 115136 2008-09-01 15:17 /usr/bin/sudoedit
-rwsr-xr-x 1 root root 32988 2008-06-09 20:10 /usr/bin/passwd
Nach Modifikation
Listet alle Dateien in /etc auf, die genau vor zwei Tagen modifiziert wurden
root@zero:/var/log# find /etc/ -mtime 2 -print /etc/apache2 /etc/apache2/mods-available /etc/apache2/conf.d /etc/apache2/sites-available /etc/bash_completion.d /etc/blkid.tab.old /etc/firefox-3.0/profile /etc/firefox-3.0/profile/chrome /etc/firefox-3.0/pref /etc/profile.d /etc/ufw/applications.d /etc/logrotate.d /etc/xulrunner-1.9 /etc/blkid.tab /etc/cron.daily /etc/alternatives /etc/alternatives/x-www-browser /etc/alternatives/xulrunner /etc/gre.d /etc/hal/fdi/policy /etc/dbus-1/system.d /etc/udev/rules.d
Nach Größe
Finde Dateien in /tmp, die größer als 100 MByte sind
root@zero:/tmp# find /tmp/ -size +100M /tmp/datei
Finde Dateien in /tmp, die kleiner als 100 KByte sind
root@zero:/tmp# find /tmp/ -size -100k /tmp/ /tmp/datei3 /tmp/backup /tmp/datei2 /tmp/.winbindd /tmp/.winbindd/pipe /tmp/mbr.img /tmp/zeugs /tmp/.ICE-unix /tmp/.X0-lock /tmp/datei1 /tmp/.X11-unix /tmp/.X11-unix/X0 /tmp/pulse-PKdhtXMmr18n
Nach Berechtigungen
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)
root@zero:/var# find /home/ -perm 777 /home/samba /home/xinux/Examples /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime /home/test/Examples
Nach Zeit
Modifiziert in der letzten Minute
root@zero:~# find /var -mmin -1 /var/log/debug /var/log/kern.log /var/log/syslog /var/run/klogd/kmsg
Modifiziert vor mehr als 9 Tagen
root@zero:~# find /var -mtime +9
Zugriff vor mehr als 9 Minuten
root@zero:~# find /var -amin +9
Kenndaten geändert in den letzen 2 Tagen
root@zero:~# find /var -ctime -2
Ausführen eines Befehls
root@zero:~# find / -name "xinux?" -exec ls -l {} \;
Ausführen eines Befehls mit Rückfrage
root@zero:~# find / -name "xinux?" -ok rm {} \;
< rm ... /tmp/xinux3 > ? y
< rm ... /tmp/xinux2 > ? n
< rm ... /tmp/xinux1 > ? y
locate
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem.
locate [Dateiname]
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also wvidal.conf*
root@zero:~# locate wvdial.conf /etc/wvdial.conf /usr/share/man/man5/wvdial.conf.5.gz /var/lib/dpkg/info/wvdial.conffiles /var/lib/dpkg/info/wvdial.config
Lokalisiere die Datei wvdial.conf und nur diese
root@zero:~# locate -b '\wvdial.conf' /etc/wvdial.conf
Aktualisieren des Indexes
root@zero:~# updatedb
Wie wird ein Kommando lokalisiert
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und schließlich mit den Shellfunktionen verglichen.
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, gibt die Shell eine Fehlermeldung aus.
which und type
which
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.
which [-a] Dateiname
Optionen:
- -a : Alle Treffer ausgeben, nicht nur den ersten
- --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen
Beispiel
root@zero:~# which startx /usr/bin/startx
type
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen Shell befinden.
type [Optionen] Befehle
Beispiel
root@zero:~# type ls ls is aliased to `ls --color=auto'
Optionen:
- -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde
root@zero:~# type -a ls ls is aliased to `ls --color=auto' ls is /bin/ls
- -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH
unterscheiden
root@zero:~# type -p apache2 /usr/sbin/apache2
- -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist
root@zero:~# type -t apache2 file