ubuntuusers.de

Bash Strings (Variablen) manipulieren

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

sxfreak

Avatar von sxfreak

Anmeldungsdatum:
27. Juni 2006

Beiträge: 436

Hi

Ich brauche für nen Script eine Umbennennung von Dateien. Jedoch hab ich leider keine Ahnung wie ich Sachen von Strings abziehe also in etwas so (i ist meine Stringvariable):

mv $i $i - .tga.jpeg +.jpeg

Danke schonmal für die Hilfe.

Gruß

sxfreak

Ubunux

Avatar von Ubunux

Anmeldungsdatum:
12. Juni 2006

Beiträge: 17457

Hallo,
evtl. kannst Du von diesem Skript was gebrauchen

for i in *.php; do mv "$i" "${i/.php}".php5; done


hiermit werden Dateien von .php nach .php5 umbenannt.
Gruß
Ubunux

sxfreak

(Themenstarter)
Avatar von sxfreak

Anmeldungsdatum:
27. Juni 2006

Beiträge: 436

Hi

Also mein script schaut jetzt so aus:

#!/bin/sh

for i in $(ls *.tga.jpeg)
do
mv $i ${i/tga.jpeg}.jpeg
done

Er gibt jedoch immer nur:

sx@kubuntu:~/Desktop$ sh rn 1.tga.jpeg
rn: 5: Syntax error: Bad substitution

aus.

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

FÜhre das Skript mit der bash und nicht mit sh (dash) aus.

sxfreak

(Themenstarter)
Avatar von sxfreak

Anmeldungsdatum:
27. Juni 2006

Beiträge: 436

Juhu es tut vielen dank. 😉

Jetzt hab ich aber ne weitere Frage:

Ich hab in nem Dateinamen mehrere Informationen und die will ich jetzt rausnehmen und neu anordnen. Wie mach ich das dann? Ich hab das wegschneiden der anderen Sachen schon mit Wildcards versucht hat aber nich geklappt.

mv $i "Screenshot vom $(WoWScreenShot_??/i/??_??????.jpeg).$(WoWScreenShot_/i/????_??????.jpeg).20$(WoWScreenShot_????/i/_??????.jpeg) um $(WoWScreenShot_??????_/i/????.jpeg):$(WoWScreenShot_??????_??/i/??.jpeg) $(WoWScreenShot_??????_????/i/.jpeg).jpeg"

Ach ja, beim Dateinamen bleibt die Buchstabenanzahl gleich.

Nach vielem hin und her hab ichs endlich geschafft aber jetzt hab ich schon wieder nen neues Problem:

#!/bin/bash

for i in *.{jpeg,jpg};
		do
		month=$(expr substr $i 19 2)
		day=$(expr substr $i 16 2)
		year=$(expr substr $i 24 2)
		hour=$(expr substr $i 30 2)
		minute=$(expr substr $i 33 2)
		second=$(expr substr $i 36 2)
		mv $i "WoWScrnShot_$month$day$year_$hour$minute$second.jpeg"
		done

Der Script soll "Screenshot vom 10.04.2005 um 17:33:12.jpeg" in "WoWScrnShot_041005_173312.jpeg" umwandeln. Jedoch meint er immer:

sx@kubuntu:~/Desktop/JPEG$ bash ../back
expr: Syntaxfehler
expr: Syntaxfehler
expr: Syntaxfehler
expr: Syntaxfehler
expr: Syntaxfehler
expr: Syntaxfehler
mv: angegebenes Ziel „WoWScrnShot_.jpeg“ ist kein Verzeichnis

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4694

Wohnort: Berlin

In Deinem $i sind Leerzeichen enthalten, dann musst Du die Variable in doppelte Anführungszeichen setzen wenn Du sie als Argument bei Programmaufrufen benutzt. Sonst werden aus den einzelnen "Worten" auch einzelne Argumente.

sxfreak

(Themenstarter)
Avatar von sxfreak

Anmeldungsdatum:
27. Juni 2006

Beiträge: 436

Vielen Dank. 😉

Antworten |