Suchen und finden: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „===find=== find ab_wo_wird_gesucht was_wird_gesucht aktion find [Pfad] [Bedingung] [Aktion] ====Nach Namen==== find [Pfad] '''-name''' [Name] Finde alle …“)
 
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 71: Zeile 71:
  
 
====Nach Permissions====
 
====Nach Permissions====
  root@cardassia:~# find /usr/bin/ -perm +4000 -exec ls -l {} \;
+
  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 115136 2008-09-01 15:17 /usr/bin/sudoedit
 
  -rwsr-xr-x 1 root root 32988 2008-06-09 20:10 /usr/bin/passwd
 
  -rwsr-xr-x 1 root root 32988 2008-06-09 20:10 /usr/bin/passwd
  
 
====Nach Modifikation====
 
====Nach Modifikation====
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden
+
Listet alle Dateien in /etc auf, die genau vor zwei Tagen modifiziert wurden
 
  root@zero:/var/log# find /etc/ -mtime 2 -print
 
  root@zero:/var/log# find /etc/ -mtime 2 -print
 
  /etc/apache2
 
  /etc/apache2
Zeile 159: Zeile 159:
  
 
===locate===
 
===locate===
 +
;Wenn icht vorhanden
 +
apt install plocate
 
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht  
 
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.  
 
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem.  
Zeile 165: Zeile 167:
 
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also
 
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also
 
wvidal.conf*
 
wvidal.conf*
  root@zero:~# locate wvdial.conf
+
  locate wvdial.conf
/etc/wvdial.conf
+
  /etc/wvdial.conf
/usr/share/man/man5/wvdial.conf.5.gz
+
  /usr/share/man/man5/wvdial.conf.5.gz
/var/lib/dpkg/info/wvdial.conffiles
+
  /var/lib/dpkg/info/wvdial.conffiles
/var/lib/dpkg/info/wvdial.config
+
  /var/lib/dpkg/info/wvdial.config
  
 
Lokalisiere die Datei wvdial.conf und nur diese
 
Lokalisiere die Datei wvdial.conf und nur diese
  root@zero:~# locate -b '\wvdial.conf'
+
  locate -b '\wvdial.conf'
 
  /etc/wvdial.conf
 
  /etc/wvdial.conf
  
 
Aktualisieren des Indexes
 
Aktualisieren des Indexes
  root@zero:~# updatedb
+
  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
+
*[[Kommandolokalisierung]]
root@zero:~# type '''-t''' apache2
 
file
 

Aktuelle Version vom 20. Juni 2024, 06:32 Uhr

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

Wenn icht vorhanden
apt install plocate

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*

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

locate -b '\wvdial.conf'
/etc/wvdial.conf

Aktualisieren des Indexes

updatedb