Hallo Liste, ich möchte eine Liste von Dateien, die ich beispielsweise mit "find . -iname *.blub" erzeuge, weiterverarbeiten. am liebsten wäre mir, die Liste in mein Script zur Weiterverarbeitung zu pipen: "find . -iname *.blub | mein_script.sh" Wie lese ich in meinem Script die Dateinamen einzeln ein ? Die Dateinamen können Leerzeichen enthalten. vielen Dank, Marco -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Hungerpirat! On Tue, 30 Sep 2008, Hungerpirat wrote:
Hallo Liste,
ich möchte eine Liste von Dateien, die ich beispielsweise mit "find . -iname *.blub" erzeuge, weiterverarbeiten. am liebsten wäre mir, die Liste in mein Script zur Weiterverarbeitung zu pipen: "find . -iname *.blub | mein_script.sh"
Wie lese ich in meinem Script die Dateinamen einzeln ein ? Die Dateinamen können Leerzeichen enthalten.
#!/bin/bash while IFS= read -r -d $'\0' datei; do echo "$datei" done Und dann mit dem -print0 Parameter von find verknüpfen. Mit freundlichen Grüßen Christian -- [root@debian /root]# man real-life No manual entry for real-life -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 30 Sep 2008, Hungerpirat schrieb:
ich möchte eine Liste von Dateien, die ich beispielsweise mit "find . -iname *.blub" erzeuge, weiterverarbeiten. am liebsten wäre mir, die Liste in mein Script zur Weiterverarbeitung zu pipen: "find . -iname *.blub | mein_script.sh"
Wie lese ich in meinem Script die Dateinamen einzeln ein ? Die Dateinamen können Leerzeichen enthalten.
while IFS= read -r dateiname; do ... done -dnh -- Ed Masry: What makes you think you can just walk in there and take whatever you want? Erin Brockovich: They're called boobs, Ed. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Marco, Am Dienstag, 30. September 2008 22:24:59 schrieb Hungerpirat:
Hallo Liste,
ich möchte eine Liste von Dateien, die ich beispielsweise mit "find . -iname *.blub" erzeuge, weiterverarbeiten. am liebsten wäre mir, die Liste in mein Script zur Weiterverarbeitung zu pipen: "find . -iname *.blub | mein_script.sh"
Wie lese ich in meinem Script die Dateinamen einzeln ein ? Die Dateinamen können Leerzeichen enthalten.
vielen Dank, Marco ================= man find ================================== Aktionen -exec Kommando; führt das Kommando aus; die Aktion ist wahr, wenn das Kommando einen Status von Null liefert; alle auf den Kommandonamen folgenden Argumente bis zu einem Semikolon ; werden als Kommandozeilenargumente für das Kommando interpretiert; das Semikolon kann nicht weggelassen werden, und es muss durch mindestens ein Whitespace von der letzten Option getrennt wer- den; die Konstruktion {} wird durch den Pfadnamen der Datei ersetzt; die Klammern und das Semikolon müssen in der Komman- dozeile für find quotiert werden, damit sie nicht von der Shell bearbeitet werden ===========================================================
Der Aufruf sieht dann folgendermaßen aus: find . -iname *.blub -exec dein-script \{\} \; dein-script erhält den Dateinamen im Parameter 1: $1 Viele Grüße Günter -- Guenter Ohmer Jahnstrasse 24 D 76865 Rohrbach mailto:guenter.ohmer@gmx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, On Wednesday 01 October 2008 09:32:00 Günter Ohmer wrote:
Der Aufruf sieht dann folgendermaßen aus: find . -iname *.blub -exec dein-script \{\} \;
dein-script erhält den Dateinamen im Parameter 1: $1
Nutzt man (ab einer bestimmten Version von find) Folgendes: find . -iname *.blub -exec dein-script {} \+ (man beachte das "\+" anstatt dem "\;"), dann ruft find das Script immer mit moeglichst vielen gefundenen Pfadnamen af einmal auf, aehnlich einem xargs. D.h. heisst du kannst in der Bash per "shift" durch die Parameter wandern. Oder per declare -a paras=( "$@" ) die Parameter in ein Array lesen und von dort weitermachen. Roman -- Roman Fietze Telemotive AG Büro Mühlhausen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Christian Brabandt
-
David Haller
-
Günter Ohmer
-
Hungerpirat
-
Roman Fietze