find-befehl in for-schleifen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ts_berlin
Beiträge: 37
Registriert: 24.02.2003 17:48:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Berlin
Kontaktdaten:

find-befehl in for-schleifen

Beitrag von ts_berlin » 23.04.2009 14:55:28

hallo forum,
entweder ich habe ein brett vorm kopf oder mache einen schweren denkfehler (oder beides)

Bash-Scripting:
ich versuche ein find-befehl in einer for-schleife einzubinden, um aus einer liste mit dateien, den genauen verzeichnisstandort herauszufinden

Code: Alles auswählen

for DATEI in `cat DATEILISTE`; do
    find AUSGANGSVERZEICHNIS -name $DATEI
done
jetzt soll auf dem prompt die dateien mit gesamten verzeichnispfad ausgegeben werden, die in DATEILISTE stehen
geht aber nicht, auf der kommandozeile, bzw ohne for-schleife gehts, wo liegt der denkfehler?

thx

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: find-befehl in for-schleifen

Beitrag von ThorstenS » 23.04.2009 15:03:29

geht einwandfrei:

Code: Alles auswählen

$ cat dateiliste
output.iso
output.iso.md5

$ for DATEI in $(cat dateiliste); do find -name $DATEI; done
./dvd_target/output.iso
./dvd_target/output.iso.md5

ts_berlin
Beiträge: 37
Registriert: 24.02.2003 17:48:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Berlin
Kontaktdaten:

Re: find-befehl in for-schleifen [geloest]

Beitrag von ts_berlin » 23.04.2009 17:09:41

hat sich erledigt..danke

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: find-befehl in for-schleifen

Beitrag von peschmae » 23.04.2009 19:47:06

Wenn deine Dateiliste Dateien mit Leerzeichen im Namen hat fällst du mit sowas aber auf die Nase. Deshalb viel cooler:

Code: Alles auswählen

while read DATEI; do find -name $DATEI; done < dateiliste
Ausserdem finde ich es unglaublich cool dass man in Bash-While-Schleifen Zeugs hineinpipen oder mit < > umleiten kann ;)

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

ts_berlin
Beiträge: 37
Registriert: 24.02.2003 17:48:35
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Berlin
Kontaktdaten:

Re: find-befehl in for-schleifen

Beitrag von ts_berlin » 24.04.2009 21:58:43

doch nicht geloest, also ich habe Peschmä wie auch ThorstenS version versucht, aber innerhalb einer schleife gibt find keine suchergebnisse aus. weder in einem skript, noch direkt die schleife in die eingabezeile geschrieben.
wenn ich direkt find -name datei funktionierts
das entwickelt sich zu einem mysterium.
irgendwer ideen, warum es bei mir nicht klappt?

ratlos
ts_berlin

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: find-befehl in for-schleifen

Beitrag von peschmae » 25.04.2009 12:03:30

Also bei mir geht sowas:

Code: Alles auswählen

peschmae@sid:/tmp> mkdir /tmp/bar                               2009-04-25 (11:59)
peschmae@sid:/tmp> cd /tmp/bar                                  2009-04-25 (11:59)
peschmae@sid:/tmp/bar> touch a b c                              2009-04-25 (11:59)
peschmae@sid:/tmp/bar> mkdir e                                  2009-04-25 (11:59)
peschmae@sid:/tmp/bar> mkdir e/f e/g                            2009-04-25 (11:59)
peschmae@sid:/tmp/bar> touch e/g/a                              2009-04-25 (11:59)
peschmae@sid:/tmp/bar> ls | while read f; do echo "Foo: $f"; find $PWD -name "$f"; done
Foo: a
/tmp/bar/e/g/a
/tmp/bar/a
Foo: b
/tmp/bar/b
Foo: c
/tmp/bar/c
Foo: e
/tmp/bar/e
peschmae@sid:/tmp/bar>                                          2009-04-25 (12:00)
Von dem her kann ich dein Problem nicht wirklich nachvollziehen.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Antworten