1 |
Am Mittwoch, 11. Oktober 2006 23:50 schrieb Jan Girlich: |
2 |
... |
3 |
> |
4 |
> jan@jan ~/Bilder $ find . -name '*.jpg' -exec echo \{\} |
5 |
> /media/usbdisk/`echo \{\}` | sed -e 's/://g' \; |
6 |
> sed: kann ; nicht lesen: Datei oder Verzeichnis nicht gefunden |
7 |
> find: Fehlendes Argument für "-exec". |
8 |
> |
9 |
> Warum will sed immer ";" als Eingabedatei lesen? |
10 |
|
11 |
Sieht für mich aus, als hättest Du so ziemlich alles gequotet, was Du nicht |
12 |
quoten mußt ;-) Die {} hab ich immer so stehen und geht auch, anstatt den `` |
13 |
ist wohl $() vorteilhafter (zumindest besser zu unterscheiden, aber ich |
14 |
verwende auch beides), aber mit derlei Ausdrücken im -exec-Argument von find |
15 |
hatte ich noch kein Glück - wird wohl 'ne Subshell aufgemacht, und dann |
16 |
klappt 'was mit der Argument-/Ergebnisübergabe nicht. Und weil die angehängte |
17 |
Pipeline ins sed danach steht, glaubt die Shell, daß das find zuende ist und |
18 |
übergibt das Semikolon als Dateiname ans sed - ersteres mault, weil's sein |
19 |
heliebtes Semikolon vermißt und letzteres kann die Datei namens ";" nicht |
20 |
finden. Eine Funktionierende Variante ist unten. |
21 |
|
22 |
> Und wie kann ich das bitte einfacher haben? Oder ist mein Ansatz schon |
23 |
> mal grundsätzlich der richtige? |
24 |
|
25 |
Wie schon geschrieben, mmv. Wenn Du aber öfter auf Fremdsystemen zu tun hast, |
26 |
wo Du nicht einfach für'n kleines Problemchen 'was neu installieren kannst |
27 |
oder einfach Shell üben willst, versuch' mal das: |
28 |
|
29 |
find . -name '*.jpg' | while read file; do echo mv $file $(echo "$file" | |
30 |
sed -e 's+\./+/media/usbdisk/+' -e 's/://g'); done |
31 |
|
32 |
Viele Grüße! |
33 |
Eckard |
34 |
|
35 |
-- |
36 |
gentoo-user-de@g.o mailing list |