PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Sed Leerzeichen in "\ " umwandeln



Menetekel
17.05.03, 18:25
Ich möchte mit sed alle Leerzeichen in "\ " umwandeln, damit ich mit dem unteren Script alle JPGs aus /home/mp3 in das derzeitige Verzeichniss kopieren kann (Auch die, die ein Leerzeichen im Namen haben).
Kann man Sed dazu bringen beim Ersetzen der Leerzeichen die Leerzeichen am Ende einer Zeile zu "übersehen"?

#!/bin/bash
for i in `find /home/mp3/ -name *jpg` ; do cp $i ./ ; done

3qualizer
17.05.03, 18:27
machs doch einfach so:

find /home/mp3/ -name "*.jpg" -exec cp "{}" ./ \;

Menetekel
17.05.03, 18:48
Danke funktioniert perfekt.
Nun will ich auch noch verstehen wie's funktioniert. Kannst du mir Rest, nach dem find Befehl und dessen Parametern erklären?

3qualizer
17.05.03, 19:04
find /home/mp3/ -name "*.jpg" -exec cp "{}" ./ \;

Nach dem -exec wird einfach angegeben, was gemacht werden soll. Das {} ist dabei der Dateiname (und damits keine Probleme mit Leerzeichen usw. gibt in Anführungszeichen) und das \; ist... man find ;) *scnr*


-exec command ;
Execute command; true if 0 status is returned. All following
arguments to find are taken to be arguments to the command until
an argument consisting of `;' is encountered. The string `{}'
is replaced by the current file name being processed everywhere
it occurs in the arguments to the command, not just in arguments
where it is alone, as in some versions of find. Both of these
constructions might need to be escaped (with a `\') or quoted to
protect them from expansion by the shell. The command is exe-
cuted in the starting directory.

Menetekel
17.05.03, 19:17
Ok Danke hab's verstanden. Macht den Alltag leichter :-)