Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

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}}
tux/find.1301580251.txt.gz (108076 views) · Zuletzt geändert: 2011/04/16 22:10 (Externe Bearbeitung)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0