Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
tux:find [2011/03/31 16:04] 127.0.0.1 external edit |
tux:find [2012/10/25 16:13] (aktuell) wikisysop |
||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
<fc #008000>find</fc>((http://unixhelp.ed.ac.uk/CGI/man-cgi?find)) gehört zu den am häufigst benötigten Befehlen in einer Shell und der Umgang damit ist den meisten (Shell) Anwendern geläufig. Aber wie viele Unix Kommandos ist auch <fc #008000>find</fc> mit zahlreichen Optionen ausgestattet, die als Filter für die Suche verwendet werden können. Der Aufruf lautet: | <fc #008000>find</fc>((http://unixhelp.ed.ac.uk/CGI/man-cgi?find)) gehört zu den am häufigst benötigten Befehlen in einer Shell und der Umgang damit ist den meisten (Shell) Anwendern geläufig. Aber wie viele Unix Kommandos ist auch <fc #008000>find</fc> mit zahlreichen Optionen ausgestattet, die als Filter für die Suche verwendet werden können. Der Aufruf lautet: | ||
- | <xterm2>$ <fc #008000>find</fc> //Path -Options// -//Tests// //Suchstring// <fc #008000>-print</fc> | + | <xterm>$ <fc #008000>find</fc> //Path -Options// -//Tests// //Suchstring// <fc #008000>-print</fc> |
- | </xterm2> | + | </xterm> |
<fc #008000>**//Path//**:</fc> Gibt den Pfad an, in welchem gesucht werden soll. Dabei kann zB das Rootverzeichnis "<fc #008000>/</fc>", das Homedirectory "<fc #008000>~</fc>", das aktuelle Verzeichnis "<fc #008000>.</fc>" oder ein beliebig spezifizierter Pfad "<fc #008000>/foo/bar</fc>" verwendet werden. <fc #008000>find</fc> sucht immer rekursiv! | <fc #008000>**//Path//**:</fc> Gibt den Pfad an, in welchem gesucht werden soll. Dabei kann zB das Rootverzeichnis "<fc #008000>/</fc>", das Homedirectory "<fc #008000>~</fc>", das aktuelle Verzeichnis "<fc #008000>.</fc>" oder ein beliebig spezifizierter Pfad "<fc #008000>/foo/bar</fc>" verwendet werden. <fc #008000>find</fc> sucht immer rekursiv! | ||
Zeile 23: | Zeile 23: | ||
| <fc #008000>-group</fc> | Sucht nach Dateien oder Verzeichnissen die zu einer bestimmten Gruppe gehören | | | <fc #008000>-group</fc> | Sucht nach Dateien oder Verzeichnissen die zu einer bestimmten Gruppe gehören | | ||
| <fc #008000>-perm //Octalzahl//</fc> |Sucht nach den Berechtigungen Octalzahl von Dateien oder Verzeichnisse zB -perm 777 | | | <fc #008000>-perm //Octalzahl//</fc> |Sucht nach den Berechtigungen Octalzahl von Dateien oder Verzeichnisse zB -perm 777 | | ||
- | | <fc #008000>-amin //n//</fc> |Sucht nach Dateien welche in den letzten //n// Minuten in Verwendung waren | | + | | <fc #008000>-cmin //n//</fc> |Sucht nach Dateien welche in den letzten //n// Minuten geändert wurden | |
| <fc #008000>-type [fdl]</fc> |Sucht nach angebenen Dateitypen: <fc #008000>f -> Datei; d -> Verzeichnis; l -> symbolischer Link</fc> | | | <fc #008000>-type [fdl]</fc> |Sucht nach angebenen Dateitypen: <fc #008000>f -> Datei; d -> Verzeichnis; l -> symbolischer Link</fc> | | ||
| <fc #008000>-empty</fc> |Sucht nach leeren Dateien oder Verzeichnissen | | | <fc #008000>-empty</fc> |Sucht nach leeren Dateien oder Verzeichnissen | | ||
- | |<fc #008000>-size //[+/-]n[ckMG]//</fc> | Sucht nach Dateien grösser "+" bzw. kleiner "-" n <fc #008000>c -> Byte; k -> Kilobyte; M -> Megabyte und G -> Gigabyte</fc> || | + | |<fc #008000>-size //[+/-]n[ckMG]//</fc> | Sucht nach Dateien grösser "+" bzw. kleiner "-" n <fc #008000>c -> Byte; k -> Kilobyte; M -> Megabyte und G -> Gigabyte</fc> | |
**Logische Verknüpfungen:** | **Logische Verknüpfungen:** | ||
Zeile 35: | Zeile 35: | ||
| <fc #008000>!</fc> | Die Negation eines logischen Ausdrucks. Das Ausrufezeichen (!) repräsentiert den NICHT-Operator.| | | <fc #008000>!</fc> | Die Negation eines logischen Ausdrucks. Das Ausrufezeichen (!) repräsentiert den NICHT-Operator.| | ||
| <fc #008000>-a</fc> | Die UND-Verknüpfung von logischen Ausdrücken. Werden mehrere logische Ausdrücke hintereinandergeschrieben,\\ wird dies implizit als UND interpretiert. Man kann auch explizit den -a Operator verwenden. | | | <fc #008000>-a</fc> | Die UND-Verknüpfung von logischen Ausdrücken. Werden mehrere logische Ausdrücke hintereinandergeschrieben,\\ wird dies implizit als UND interpretiert. Man kann auch explizit den -a Operator verwenden. | | ||
- | | <fc #008000>-o</fc> | Die ODER-Vernüpfung von logischen Ausdrücken wird durch den Operator -o erreicht. || | + | | <fc #008000>-o</fc> | Die ODER-Vernüpfung von logischen Ausdrücken wird durch den Operator -o erreicht. | |
Zeile 42: | Zeile 42: | ||
**Ausgabe an weitere Kommandos weiterleiten (Actions):** | **Ausgabe an weitere Kommandos weiterleiten (Actions):** | ||
- | Oft ist es mit der Anzeige der gefundenen Resultate nicht getan, viel mehr wird die Ausgabe häufig weiterverarbeitet. Das kann zB ein Lösch-Befehl, ein Verschieben-Befehl oder ein Umbennen-Befehl sein. Dem <fc #008000>find</fc>-Befehl stehen dafür zahlreiche Action Kommandos zur Verfügung. Die folgende tabelle enthält ein paar Beispiele, welche öfter verwendet werden: | + | Oft ist es mit der Anzeige der gefundenen Resultate nicht getan, viel mehr wird die Ausgabe häufig weiterverarbeitet. Das kann zB ein Lösch-Befehl, ein Verschieben-Befehl oder ein Umbennen-Befehl sein. Dem <fc #008000>find</fc>-Befehl stehen dafür zahlreiche Action Kommandos zur Verfügung. Die folgende Tabelle enthält ein paar Beispiele, welche öfter verwendet werden: |
^ Action ^ Beschreibung ^ | ^ Action ^ Beschreibung ^ | ||
Zeile 48: | Zeile 48: | ||
| <fc #008000>-exec //command {}[;+]//</fc> | Execute Command; alle von find gefundenen Ergebnisse werden dem durch -exec ausgeführten\\ Kommando als Argument übergeben. Das Semikolon bzw Plus-Zeichen schliesst den Befehl ab. Werden\\ viele Argumente dem Befehl übergeben kann die Verwendung des Plus-Zeichens die Performance des\\ auszuführenden Befehls deutlich erhöhen. Besitzt ein Kommando mehr Argumente, legt die Zeichenfolge {}\\ die Position der von find gelieferten Argumente fest.| | | <fc #008000>-exec //command {}[;+]//</fc> | Execute Command; alle von find gefundenen Ergebnisse werden dem durch -exec ausgeführten\\ Kommando als Argument übergeben. Das Semikolon bzw Plus-Zeichen schliesst den Befehl ab. Werden\\ viele Argumente dem Befehl übergeben kann die Verwendung des Plus-Zeichens die Performance des\\ auszuführenden Befehls deutlich erhöhen. Besitzt ein Kommando mehr Argumente, legt die Zeichenfolge {}\\ die Position der von find gelieferten Argumente fest.| | ||
| <fc #008000>-ok //command {};//</fc> | Wie <fc #008000>-exec</fc>, fordert jedoch eine Bestätigung zum Ausführen des Kommandos auf| | | <fc #008000>-ok //command {};//</fc> | Wie <fc #008000>-exec</fc>, fordert jedoch eine Bestätigung zum Ausführen des Kommandos auf| | ||
- | | <fc #008000>-print0</fc> | Schreibt den vollständigen Namen der Datei oder des Verzeichnisses zur Standardausgabe,\\ gefolgt von einem <fc #008000>NULL-Zeichen</fc> an Stelle des sonst üblichen <fc #008000>NEWLINE-Zeichen</fc>. Dies kann notwendig\\ sein, wenn in den Suchergebnissen Leerzeichen zu erwarten sind, da darauf folgende Kommandos\\ ein Leerzeichen häufig als Ende des Arguments verstehen. Dem ausführenden Operator kann\\ (-exec oder -xargs) kann dann mitgeteilt werden, das Argument bis zum NULL-Zeichen zu lesen || | + | | <fc #008000>-print0</fc> | Schreibt den vollständigen Namen der Datei oder des Verzeichnisses zur Standardausgabe,\\ gefolgt von einem <fc #008000>NULL-Zeichen</fc> an Stelle des sonst üblichen <fc #008000>NEWLINE-Zeichen</fc>. Dies kann notwendig\\ sein, wenn in den Suchergebnissen Leerzeichen zu erwarten sind, da darauf folgende Kommandos\\ ein Leerzeichen häufig als Ende des Arguments verstehen. Dem ausführenden Operator kann\\ (-exec oder -xargs) kann dann mitgeteilt werden, das Argument bis zum NULL-Zeichen zu lesen | |
**Beispiele:** <fs 0.8em>(Syntaxcheck an Mac OSX 10.6.3 -> Darwin 10.0)</fs> | **Beispiele:** <fs 0.8em>(Syntaxcheck an Mac OSX 10.6.3 -> Darwin 10.0)</fs> | ||
Zeile 54: | Zeile 54: | ||
Sucht rekursiv ab //aktuellen Verzeichnis// (.) nach Dateien oder Verzeichnissen die exakt //IMG_1234.jpg// heissen: | Sucht rekursiv ab //aktuellen Verzeichnis// (.) nach Dateien oder Verzeichnissen die exakt //IMG_1234.jpg// heissen: | ||
- | <xterm2>$ <fc #008000>find . -name IMG_1234.jpg -print</fc> | + | <xterm>$ <fc #008000>find . -name IMG_1234.jpg</fc> |
- | </xterm2> | + | </xterm> |
Sucht //nur// (-maxdepth 1) im //aktuellen Verzeichnis// nach Dateien oder Verzeichnissen die mit //.jpg// enden und zeigt diese mit ausführlichen Informationen an (-ls): | Sucht //nur// (-maxdepth 1) im //aktuellen Verzeichnis// nach Dateien oder Verzeichnissen die mit //.jpg// enden und zeigt diese mit ausführlichen Informationen an (-ls): | ||
- | <xterm2>$ <fc #008000>find . -maxdepth 1 -name \*.jpg -ls</fc> | + | <xterm>$ <fc #008000>find . -maxdepth 1 -name \*.jpg -ls</fc> |
- | </xterm2> | + | </xterm> |
Sucht im gesamten //Homedirectory// (~) des angemeldeten Users nach Dateien und Verzeichnissen die dem User //root// gehören: | Sucht im gesamten //Homedirectory// (~) des angemeldeten Users nach Dateien und Verzeichnissen die dem User //root// gehören: | ||
- | <xterm2>$ <fc #008000>find ~ -user root -print</fc> | + | <xterm>$ <fc #008000>find ~ -user root</fc> |
- | </xterm2> | + | </xterm> |
Sucht im //gesamten Dateisystem// (/) nach Dateien oder Verzeichnissen die der Gruppe //ftp// angehören: | Sucht im //gesamten Dateisystem// (/) nach Dateien oder Verzeichnissen die der Gruppe //ftp// angehören: | ||
- | <xterm2>$ <fc #008000>find / -group ftp -print</fc> | + | <xterm>$ <fc #008000>find / -group ftp</fc> |
- | </xterm2> | + | </xterm> |
Sucht im //gesamten Dateisystem// (/) nach Dateien und Verzeichnissen mit Vollberechtigung //(777)//: | Sucht im //gesamten Dateisystem// (/) nach Dateien und Verzeichnissen mit Vollberechtigung //(777)//: | ||
- | <xterm2>$ <fc #008000>find / -perm 777 -print</fc> | + | <xterm>$ <fc #008000>find / -perm 777 -print0</fc> |
- | </xterm2> | + | </xterm> |
Sucht im Verzeichnis ///var/log// nach Dateien die mit //.log// enden und in den //letzten fünf Minuten// (-5) verwendet wurden: | Sucht im Verzeichnis ///var/log// nach Dateien die mit //.log// enden und in den //letzten fünf Minuten// (-5) verwendet wurden: | ||
- | <xterm2>$ <fc #008000>find -L /var/log -amin -5 -name \*.log -print</fc> | + | <xterm>$ <fc #008000>find -L /var/log -cmin -5 -name \*.log</fc> |
- | </xterm2> | + | </xterm> |
Sucht rekursiv in //tmp// nach leeren Dateien oder Verzeichnissen: | Sucht rekursiv in //tmp// nach leeren Dateien oder Verzeichnissen: | ||
- | <xterm2>$ <fc #008000>find -L /tmp -empty -print</fc> | + | <xterm>$ <fc #008000>find -L /tmp -empty -print0</fc> |
- | </xterm2> | + | </xterm> |
Sucht rekursiv im eigenen //Homedirectory// (~) nach Dateien grösser 1GB: | Sucht rekursiv im eigenen //Homedirectory// (~) nach Dateien grösser 1GB: | ||
- | <xterm2>$ <fc #008000>find ~ -size +1G -print</fc> | + | <xterm>$ <fc #008000>find ~ -size +1G -print0</fc> |
- | </xterm2> | + | </xterm> |
Sucht rekursiv in Verzeichnis ///var/log// nach Dateien die mit //.log// enden und //grösser// (+) als 500 KB sind: | Sucht rekursiv in Verzeichnis ///var/log// nach Dateien die mit //.log// enden und //grösser// (+) als 500 KB sind: | ||
- | <xterm2>$ <fc #008000>find -L /var/log -name \*.log -a -size +500k -print</fc> | + | <xterm>$ <fc #008000>find -L /var/log -name \*.log -a -size +500k</fc> |
- | </xterm2> | + | </xterm> |
Sucht nur im Verzeichnis ///var/log// nach Dateien die //kleiner// (-) sind als 500KB und //nicht// (!) dem User //root// gehören: | Sucht nur im Verzeichnis ///var/log// nach Dateien die //kleiner// (-) sind als 500KB und //nicht// (!) dem User //root// gehören: | ||
- | <xterm2>$ <fc #008000>find -L /var/log -maxdepth 1 -size -500k -a ! -user root -print</fc> | + | <xterm>$ <fc #008000>find -L /var/log -maxdepth 1 -size -500k -a ! -user root</fc> |
- | </xterm2> | + | </xterm> |
Sucht im //tmp-Verzeichnis// nach leeren Dateien und Verzeichnissen und löscht diese: | Sucht im //tmp-Verzeichnis// nach leeren Dateien und Verzeichnissen und löscht diese: | ||
- | <xterm2>$ <fc #008000>find -L /tmp -empty -exec rm -rf \;</fc> | + | <xterm>$ <fc #008000>find -L /tmp -empty -exec rm -rf \;</fc> |
- | </xterm2> | + | </xterm> |
Sucht nur in ///var/log// nach //bz2// komprimierte Dateien (alte Logfiles) und löscht diese. Ein sudo-Kommando ist erforderlich, da Root der Eigentümer der Logdateien ist: | Sucht nur in ///var/log// nach //bz2// komprimierte Dateien (alte Logfiles) und löscht diese. Ein sudo-Kommando ist erforderlich, da Root der Eigentümer der Logdateien ist: | ||
- | <xterm2>$ <fc #008000>sudo find -L /var/log -maxdepth 1 -name \*.bz2 -delete</fc> | + | <xterm>$ <fc #008000>sudo find -L /var/log -maxdepth 1 -name \*.bz2 -delete</fc> |
- | </xterm2> | + | </xterm> |
Sucht Dateien in meinem //Homedirectory// (~), die //nicht// (!) //mir Selbst// $(whoami) gehören und listet diese ausführlich auf (-ls): | Sucht Dateien in meinem //Homedirectory// (~), die //nicht// (!) //mir Selbst// $(whoami) gehören und listet diese ausführlich auf (-ls): | ||
- | <xterm2>$ <fc #008000>find ~ ! -user $( whoami ) -ls</fc> | + | <xterm>$ <fc #008000>find ~ ! -user $( whoami ) -ls</fc> |
- | </xterm2> | + | </xterm> |
Sucht nur (-maxdepth 1) auf meinem Desktop (~/Desktop) nach Dateien (-type f), schliesst die gesuchten Elemente mit einem NULL-Zeichen ab (-print0) um Leerzeichen im Dateinamen zu berücksichtigen und pipet die Ausgabe (|) nach xargs, welches das NULL-Zeichen auswertet (-0) und zeigt den Dateityp (file) der gefundenen Elemente an: | Sucht nur (-maxdepth 1) auf meinem Desktop (~/Desktop) nach Dateien (-type f), schliesst die gesuchten Elemente mit einem NULL-Zeichen ab (-print0) um Leerzeichen im Dateinamen zu berücksichtigen und pipet die Ausgabe (|) nach xargs, welches das NULL-Zeichen auswertet (-0) und zeigt den Dateityp (file) der gefundenen Elemente an: | ||
- | <xterm2>$ <fc #008000>find ~/Desktop -maxdepth 1 -type f -print0 | xargs -0 file</fc> | + | <xterm>$ <fc #008000>find ~/Desktop -maxdepth 1 -type f -print0 | xargs -0 file</fc> |
- | </xterm2> | + | </xterm> |
Zeile 130: | Zeile 130: | ||
\\ | \\ | ||
--- //pronto 2010/04/04 17:16// | --- //pronto 2010/04/04 17:16// | ||
- | {{keywords>linux syntax beispiele debian osx}} | + | {{keywords>linux find syntax beispiele}} |