PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : find - exec argument in variable speichern



dvd666
28.04.05, 17:01
Sagen wir ich will alle mp3's die find findet umbenennen, dazu stelle ich mir folgendes script vor:

find . -type f -name "*.mp3" -exec sh -c "tmp={}; mv $tmp rename_$tmp" \;


das geht aber nicht...wie soll ich es machen? geht das?

Und: Ja, ich will es mit find machen und ohne zusaetzlichem script was aufgerufen wird.

tictactux
28.04.05, 17:15
Und: Ja, ich will es mit find machen und ohne zusaetzlichem script was aufgerufen wird.
Das {} hat seine spezielle Bedeutung nur, wenn es direkt von find "gelesen" wird.
So wie Du es machen willst, tut das aber die Shell.
Abhilfe: baue um find eine for-Schleife, die die Dateinamen einzeln liefert.
Beispiele dazu: Suchfunktion "for x in $(find".

Gruss,
Wolfgang

dvd666
28.04.05, 18:17
Oh, danke!

und wers nch wissen will:


for tmp in $(find . -type f -name "*.mp3");
do filename=${tmp##*/}; directory=${tmp%%$filename};
echo mv $tmp $directory"converted_"$filename ; done;


natuerlich dann das letztet echo entfernen, aber damit kann man erstmal sichergehen ob alles klappt ;)