character in Bashscript umschreiben zum Umbenennen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Yasuo
Beiträge: 135
Registriert: 05.08.2004 20:42:25
Kontaktdaten:

character in Bashscript umschreiben zum Umbenennen

Beitrag von Yasuo » 05.10.2005 18:14:57

Hi,

sorry für das wenig aussagende Topic und mit Debian hat es ja auch wenig zu tun:

ein kleines Script soll mir die Arbeit abnehmen aus Dateinamen Umlaute zu entfernen damit die gebrannten Dateien auch wirklich in allen Systemen lesbar sind.

hauptsächlich geht es dabei um äöüß?,.
nun habe/hatte ich in der Konsole Probleme die entsprechanden zeichen in das Script zu bekommen - der Code im Dateinamen der Datei war scheinbar ein anderer als der den ich mit der Tastatur eingetippt habe.

ach ein "ls >test.script" hat nicht geholfen, im schlimmsten Fall hat das Script die Datei dann ins Nirvana umbenannt = gelöscht.

ich suche nun eine Möglichkeit in Bash-scriptden umlaute bzw Zeichencodes zu umschreiben.


hier ein Auszug aus meinem Script:

Code: Alles auswählen

function umlaute_weg(){
epgtitle=${epgtitle//$1/$2}
tsdateineu=${tsdateineu//"$1"/"$2"}
echo "tsdateineu ist $tsdateineu";
 return
}

umlaute_weg " & "  "_n_";
umlaute_weg "&"  "_n_";
umlaute_weg "Ä"  "Ae";
umlaute_weg "ä"  "ae";
umlaute_weg "À" "ae";
umlaute_weg "ö"  "oe";
umlaute_weg "\Ö"  "Oe";
umlaute_weg "\Ã\Œ" "ue";
umlaute_weg "\ü"  "ue";

wie zu sehen habe ich schon versucht die Umlaute zu umschreiben, klappt aber nich - es muss doch eine Möglichkeit geben den ascii-code (ich sage jetzt einfach mal ascii auch wenn es ein anderer zeichensatz ist) zu umschreiben...


danke schonmal fürs Lesen und Verstehen :)

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 05.10.2005 18:20:31

Ich denke es paßt besser hier als in Programm gesucht.

Bert
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 05.10.2005 19:58:59

Hallo Yasuo,
ich würde das "sed-Script" für Deine Verhältnisse anpassen:
http://www.linuxfibel.de/sed.htm#script

Gruß fuzzy

Yasuo
Beiträge: 135
Registriert: 05.08.2004 20:42:25
Kontaktdaten:

Beitrag von Yasuo » 05.10.2005 20:13:44

hi,

und wie kriege ich das ö in das script wenn es nicht dasselbe ö ist was "aus meiner Tastatur" kommt wie das im Dateinamen?

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 05.10.2005 20:43:18

Hallo Yasuo,
eventuell habe ich das doch nicht richtig Verstanden :roll:
Auf dem Rechner, der die "Umbenennung" macht, sollten schon alle Zeichen verfügbar sein... :wink:
Für Dateinamen eine leider etwas umständliche Idee - bitte erst an "unwichtigen" Dateien testen:

Code: Alles auswählen

fuzzy@sid:/tmp$ touch foo bar Ä-ä-Ö-ö-Ü-ü
fuzzy@sid:/tmp$ ls -l 
total 0
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 Ä-ä-Ö-ö-Ü-ü
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 bar
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 foo

fuzzy@sid:/tmp$ rename 's/Ä/ae/g;s/ä/ae/g;s/Ö/Oe/g;s/ö/oe/g;s/Ü/Ue/g;s/ü/ue/g' *
fuzzy@sid:/tmp$ ls -l 
total 0
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 ae-ae-Oe-oe-Ue-ue
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 bar
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 foo
Gruß fuzzy

Yasuo
Beiträge: 135
Registriert: 05.08.2004 20:42:25
Kontaktdaten:

Beitrag von Yasuo » 08.10.2005 15:16:15

hi und danke für den Tipp.

ich würde allerdings ungern die Dateien 2 mal umbenennen - besser wäre es das aus der textdatei ausgelesenen Textstring von den Umlauten zu befreien.

Code: Alles auswählen

		<epgtitle>Shaman King</epgtitle>
		<info1>Das Eisteam kommt öäüßÖÄÜ</info1>
daraus leite ich den Dateinamen ab

Code: Alles auswählen

epgtitle=`cat "$xmldateimitpfad"|grep "\<epgtitle\>"`
epgtitleende=${#epgtitle}
epgtitle1=${epgtitle:12}
titel=${epgtitle1/\<\/epgtitle*/};
echo "epgtitle ist $titel"
danach sollen die Umlaute entfernt werden, damit garnicht erst der böse Dateiname auf die Platte geschrieben wird.
vielleicht gibts ja auch eine whitelist die nur "gute" zeichen durchlässt, die man als Sicherung einbauen könnte.

primär gehts mir allerdings darum die bösen Umlaute - die ich teilweise nichteinmal in das script schreiben kann - durch friedvolle ASCII-Zeichen zu ersetzen :)

Yasuo
Beiträge: 135
Registriert: 05.08.2004 20:42:25
Kontaktdaten:

Beitrag von Yasuo » 17.11.2005 15:45:46

fuzzy hat geschrieben:Hallo Yasuo,
eventuell habe ich das doch nicht richtig Verstanden :roll:
Auf dem Rechner, der die "Umbenennung" macht, sollten schon alle Zeichen verfügbar sein... :wink:
Für Dateinamen eine leider etwas umständliche Idee - bitte erst an "unwichtigen" Dateien testen:

Code: Alles auswählen

fuzzy@sid:/tmp$ touch foo bar Ä-ä-Ö-ö-Ü-ü
fuzzy@sid:/tmp$ ls -l 
total 0
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 Ä-ä-Ö-ö-Ü-ü
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 bar
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 foo

fuzzy@sid:/tmp$ rename 's/Ä/ae/g;s/ä/ae/g;s/Ö/Oe/g;s/ö/oe/g;s/Ü/Ue/g;s/ü/ue/g' *
fuzzy@sid:/tmp$ ls -l 
total 0
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 ae-ae-Oe-oe-Ue-ue
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 bar
-rw-r--r--  1 fuzzy fuzzy 0 2005-10-05 20:41 foo
Gruß fuzzy
kann man da auch codes stattzeichen eingeben?

rox-filer zeigt mir beispielsweise bei einem ö im Dateinamen einer Windowsfreigabe ein kästchen mit den Ziffern 0094 an.
Das ist an sich schonmal aussagekräftiger als ein Fragezeichen, aber wie krieg ich diesen zeichencode in SED rein?

Antworten