for-schleife: cp datei in ordner -leerzeichen in ordnernamen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
akraix
Beiträge: 85
Registriert: 10.07.2002 10:57:50
Wohnort: Leipzig

for-schleife: cp datei in ordner -leerzeichen in ordnernamen

Beitrag von akraix » 03.10.2006 15:38:37

hi,

ich habe ein verzeichnis voller ordner mit leerzeichen im dateinamen. in alle diese ordner soll eine datei hineinkopiert werden. einzeln funktioniert die erweiterung:

Code: Alles auswählen

cp License.html Wead\ \(2005\)\ Wead\ \[wh022\]\ +/
allerdings nicht in der for-schleife

Code: Alles auswählen

for i in `ls`; do cp License.html $i; done
das ergebnis ist, daß ich die lizenz mehrfach rumliegen habe unter zb den namen Wead, [wh022] etc.

jaja, leerzeichen im dateinamen ... *grummel*

kann mir mal jemand mit ner lösung auf die sprünge helfen? bekomme es selber nicht hin. *grummel*

lg

akraix

anhang:
empfehlung für freunde von ambient, drone, industrial: http://www.webbedhandrecords.com/ ;-)

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Re: for-schleife: cp datei in ordner -leerzeichen in ordnern

Beitrag von Joghurt » 03.10.2006 16:21:35

Code: Alles auswählen

for i in `ls`; do cp License.html "$i"; done
Wobei das auch alle Dateien mit License.html überschreibt.
Du willst wahrscheinlich eher

Code: Alles auswählen

find . -type d -maxdepth 1 -exec cp License.html {} \;

akraix
Beiträge: 85
Registriert: 10.07.2002 10:57:50
Wohnort: Leipzig

Beitrag von akraix » 03.10.2006 16:36:21

dankeschön,

habs mir gleich angesehen und gelernt. hat dann auch geklappt. ;-)

wird zeit, daß ich mich mit find etwas genauer beschäftige. ;-)

lg

akraix

akraix
Beiträge: 85
Registriert: 10.07.2002 10:57:50
Wohnort: Leipzig

nochmal find problem

Beitrag von akraix » 13.11.2006 19:38:48

hi,

ich habe nochmal ne frage. ich benutze inzwischen find gerne und viel, allerdings bekomme ich das jetzige problem nicht in den griff.

ich möchte folgendes erreichen: find sucht in den verzeichnissen nach mp3 oder ogg files und verarbeitet alles, was er findet. ich weiß, daß in dem verzeichnisbaum verschiedene dateien liegen - nur kopiert bekomme ich sie nicht alle.

übersehe ich in der man etwas?

Code: Alles auswählen

me@server:/mnt/tmp$ find . -maxdepth 4 -name '*.mp3' -o  -maxdepth 4 -name '*.ogg'
./1-Mo/19/10/01 - Les temps modernes.ogg
./1-Mo/19/10/01 - Mme Asperge.mp3
tobs@server:/mnt/tmp$ find . -maxdepth 4 -name '*.mp3' -o  -maxdepth 4 -name '*.ogg' -exec cp -v {} /tmp/ \;
,,./1-Mo/19/10/01 - Les temps modernes.ogg" -> ,,/tmp/01 - Les temps modernes.ogg"
me@server:/mnt/tmp$ 
lg

und danke für die hilfe,

akraix

akraix
Beiträge: 85
Registriert: 10.07.2002 10:57:50
Wohnort: Leipzig

Beitrag von akraix » 13.11.2006 21:05:58

... ok, wer lesen kann ist klar im vorteil:
Ausdruck1 -o Ausdruck2
ODER Verknüpfung; Ausdruck2 wird bewertet (ausgeführt), wenn Ausdruck1 falsch ist
... bleibt nach wie vor die frage: wie kann ich beides verwerten? *grübel*

danke,

akraix

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 13.11.2006 23:42:59

Code: Alles auswählen

find . -maxdepth 4 \( -name '*.mp3' -o -name '*.ogg' \) -exec cp -v {} /tmp/ \;
Übrigens böte sich -iname an...

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 14.11.2006 00:27:39

Hallo,

vielleicht

Code: Alles auswählen

find . -regex '.*mp3\|.*ogg' -exec .....
?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

akraix
Beiträge: 85
Registriert: 10.07.2002 10:57:50
Wohnort: Leipzig

Beitrag von akraix » 14.11.2006 01:30:25

danke, beides hilft und läßt mich wieder lernen.

allerdings ... stehe ich schon wieder auf dem schlauch.

Code: Alles auswählen

find $folder -maxdepth 1 \( -iname '*.mp3' -o -name '*.ogg' \) -exec echo "scheduler.push {} | telnet localhost 1234" \;
wie kriege ich nur exec dazu, den telnet-befehl auszuführen?

als einzelscript sieht das so aus:

Code: Alles auswählen

#!/bin/bash
(echo "telnet command"
 echo "another telnet command"
 echo "yet another telnet command") \
| telnet localhost 1234
ich brauche es aber mit find.

vielen dank für die tips!

akraix

Antworten