ADMIN-Tipp: Find-Tutorial (2)

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Nachdem der erste Teil des Find-Tutorial die Basics des Programms erklärt hat, soll es dieses Mal darum gehen, wie man die gefundenen Dateien weiterverarbeiten kann.

Nachdem der erste Teil des Find-Tutorial die Grundlagen erklärt hat, verrät die zweite Folge, wie man die gefundenen Dateien weiterverarbeitet. 

Im Prinzip gibt es zwei Möglichkeiten, die mit Find gefundenen Dateien zu verarbeiten: Man kann die Ausgabe des Programms in Pipes oder anderweitig verwenden oder mit der Option "-exec" Befehle auf ein Element der Suche anwenden. Beispielsweise löscht der folgende Befehl alle Dateien mit der Endung ".bak":

find . -name "*.bak" -exec rm {} \;

(Zur Erinnerung: der Punkt ist bei GNU Find überflüssig, wird aber vom BSD Find, etwa auf OS X, verlangt). Die geschweiften Klammern stehen hier für das jeweils gefundene Element. Die ausgeführten Befehle werden mit einem Semikolon abgeschlossen, das man mit dem Backslash quoten muss, damit nicht die Shell selbst es als Abschluss für den Find-Befehl versteht.  Alternativ könnte man in diesem Fall auch die Shell-Expandierung direkt verwenden, solange die maximale Länge nicht überschritten wird:

rm `find -name "*.bak"`

oder, mit der Bash-Shell,

rm $(find -name "*.bak")

Sind in einem solchen Fall sehr viele Dateien zu verarbeiten, ist es besser, eine For-Schleife zu verwenden, etwa

for file in $(find "*.bak"); do
 rm $file
done

Auf die gleiche Art kann man auch in Dateien suchen, wenn man "grep" mit dem Schalter "-H" aufruft, um die gefundene Datei auszugeben:

find . -name "*.txt" -exec grep -H "suchbegriff" {} \;

In manchen Situationen ist es aber günstiger, die Find-Ausgabe per Pipe an einen Befehl weiterzugeben. Hierbei hilft das "xargs"-Kommando, das aus der Standardeingabe eine gewöhnliche Befehlszeile konstruiert, die manche Unix-Tools erwarten. Aus dem obigen Find-Aufruf wird somit:

find . -name "*.txt" | xargs grep -H "suchbegriff"

Ohne "xargs" würde Grep bei diesem Aufruf in den Dateinamen suchen, so aber wie gewünscht in den gefundenen Dateien selbst. 
Um hierbei auch Dateien mit Leerzeichen problemlos zu verarbeiten, bieten GNU wie auch BSD Find die Option "-print0", die als Trennzeichen der gefundenen Elemente das Ascii-Zeichen NUL verwendet. Der Befehl "xargs" besitzt zu diesem Zweck selbst den Schalter "-0". Aus dem obigen Aufruf wird somit

find . -name "*.txt" -print0 | xargs -0 grep "suchbegriff"

Für bestimmte Anwendungen ist auch nützlich, "-printf" zu verwenden, mit dem man die Ausgabe direkt verändern kann, wie mit der gleichnamigen C-Funktion.

13.06.2012

Ähnliche Artikel

  • ADMIN-Tipp: Find-Tutorial (1)

    Mit dem Find-Befehl lassen sich Dateien und Verzeichnisse auf einem Unix-System suchen. Dieser ADMIN-Tipp stellt die wichtigsten Optionen dieses leistungsfähigen Kommandos vor.

  • fd: Ersatz für Find und Schleifen

    Das kleine Tool fd kann in vielen Fällen den find-Befehl ersetzen und lässt sich einfacher verwenden.

  • ADMIN-Tipp: Schneller suchen als find

    Unter Linux ist find das bewährte Tool für eine Suche nach Dateien. Es kann flexibel mit regulären Ausdrücken und verschiedenen Suchtiefen umgehen oder eine Datumsrechnung einbeziehen. Allerdings hat es einen Nachteil: Speziell bei großen Volumes ist es prinzipbedingt sehr zeitintensiv, da es immer alle Files im Dateisystem aufsuchen und vergleichen muss.

  • ADMIN-Tipp: Suchen und Ersetzen in vielen Dateien

    Lang, lang ist's her, da gehörte Perl zum unverzichtbaren Werkzeug eines jeden Unix-Administrators. Viele kleine Aufgaben lassen sich damit immer noch am schnellsten erledigen.

  • ADMIN-Tipp: Suchen in Texten

    Wenn man zu viel findet kommt man auch nicht weiter. Das kennt man aus dem Internet aber auch vom Unix-Kommando find. Dieser ADMIN-Tipp stellt einen doppelten Filter vor, der den anfallenden Datenmüll reduzieren kann.

comments powered by Disqus

Artikel der Woche

Rechneranalyse mit Microsoft-Sysinternals-Tools

Der Rechner verhält sich eigenartig oder Sie haben eine unbekannte Applikation im Task Manager entdeckt und möchten erfahren, worum es sich dabei genau handelt und ob sie möglicherweise gefährlich ist? In so einem Fall helfen die Sysinternals-Tools von Microsoft. Dieser Beitrag stellt die drei Werkzeuge Autoruns, Process Explorer und TCPView vor. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018