Dateiendung ändern

H

hawkril

Hallo

Ich hab da ein Problem :hilfe: und zwar:

Ich brauche ein shell skript das dateien mit dem namen $name.ISO in $name.txt umbenennt. Ich frag hier mal da ich mich mit skripten noch kein bisschen beschäftigt hab :rolleyes: .

Achja.. noch kurz wofür ich das skript brauche: Mein Vater ist blind und bezieht daher die ct als ascii files. Allerdings haben die seltsamerweise die endung .ISO. Diese möchte er weghaben aber am besten im ganzen verzeichnis mit nur einem befehl..

MfG und danke im Voraus

hawkril
 
Zuletzt bearbeitet von einem Moderator:
Willkommen im ub :)

Code:
for i in *.ISO; do mv $i $(basename $i .ISO).txt; done

Gruss, Xanti
 
Oder nur mit bash:
Code:
for i in *.ISO; do mv $i ${i%ISO}txt ; done
 
Hallo auch ich wollte diese kleine script nutzen um meine CodeWarrior Projekt Dateien umzubenennen...
Leider funktioniert das bei mir nicht so richtig:

CodeWarrior legt alle Projektdateien mit der Endung *.µ an! Leider kann ich nach dem "µ" nicht suchen, weil shell das nicht findet?!
wenn ich jedoch einfach nur:

for i in *.µ; do mv $i ${i%µ}proj ; done

aufrufen dann bekomme ich folgende meldung:

mv: rename *.? to *.proj: Invalid argument

Wie kann ich das Problem umgehen!??

Danke für eure antwort!
 
Vermutlich ist das folgende nicht die eleganteste Loesung:
mit einem C-Programm
Code:
#include <stdio.h>

int main(void)
{
    int i;
    for(i = 128; i < 256; ++i) {
      printf("%d: |%c|\n", i, (char)i);
    }
    return 0;
}
habe ich rausgefunden, dass das 'mu' dem integer 181, oder 0xB5 entspricht.
Dann kannst Du diesen Wert folgendermassen in Bash verwenden:
Code:
SUFFIX=`echo -e "\xB5"`
for i in "*.$suffix"; do rm $i ; done
Vermutlich laesst sich die bash ohne die Einfuehrung der 'SUFFIX' Variable via 'echo' dazu ueberreden, Hexadezimalwerte zu akzeptieren, habe ich aber auf die Schnelle nicht hinbekommen.
 
Hallo
Eventuell reicht es ja schon, wenn du deinem Befehl die richtige LC_ALL mitgibst.
Was sagt denn locale bei dir?
$ locale
LANG=POSIX
LC_CTYPE="de_DE@euro"
LC_NUMERIC="de_DE@euro"
LC_TIME="de_DE@euro"
LC_COLLATE="de_DE@euro"
LC_MONETARY="de_DE@euro"
LC_MESSAGES="de_DE@euro"
LC_PAPER="de_DE@euro"
LC_NAME="de_DE@euro"
LC_ADDRESS="de_DE@euro"
LC_TELEPHONE="de_DE@euro"
LC_MEASUREMENT="de_DE@euro"
LC_IDENTIFICATION="de_DE@euro"
LC_ALL=de_DE@euro
$ touch test.µ
$ find . -iname "*µ"
test.µ
Wie du siehst geht sowas durchaus.

Gruß Wolfgang
 
das erhalte ich als resultat:

LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"

wo kann ich diese typen ändern??
 
Hallo

Du brauchst die entsprechende Variable deinem Befehl nur mit auf den Weg zu geben.
z.B.
Code:
$ date "+%A"
Montag
wolle@Nietzsche:~/temp
$ LC_ALL=C date "+%A"
Monday
Welche Dist. nutz du denn?
locale -a zeigt dir die möglichen Werte.
für debian gibt es hier eine gute Anleitung.
Du kannst die natürlich auch exportieren, oder in deiner .bashrc festlegen.
Für root empfiehlt es sich jedoch immer LC_ALL auf POSIX zu setzen.

Gruß Wolfgang
 
Hallo, habe mir mal den Link durchgelesen, leider ohne wirklichen erfolg...

Wolfgang, du schreibst etwas vom exportieren?? Was soll ich den exportieren...

Gibt es irgendwo eine möglichkeit die locale "von Hand" ein zu stellen...?

Das hier ist das reusltat von locale -a:

Code:
af_ZA
af_ZA.ISO8859-1
af_ZA.ISO8859-15
af_ZA.UTF-8
am_ET
am_ET.UTF-8
be_BY
be_BY.CP1131
be_BY.CP1251
be_BY.ISO8859-5
be_BY.UTF-8
bg_BG
bg_BG.CP1251
bg_BG.UTF-8
ca_ES
ca_ES.ISO8859-1
ca_ES.ISO8859-15
ca_ES.UTF-8
cs_CZ
cs_CZ.ISO8859-2
cs_CZ.UTF-8
da_DK
da_DK.ISO8859-1
da_DK.ISO8859-15
da_DK.UTF-8
de_AT
de_AT.ISO8859-1
de_AT.ISO8859-15
de_AT.UTF-8
de_CH
de_CH.ISO8859-1
de_CH.ISO8859-15
de_CH.UTF-8
de_DE
de_DE.ISO8859-1
de_DE.ISO8859-15
de_DE.UTF-8
el_GR
el_GR.ISO8859-7
el_GR.UTF-8
en_AU
en_AU.ISO8859-1
en_AU.ISO8859-15
en_AU.US-ASCII
en_AU.UTF-8
en_CA
en_CA.ISO8859-1
en_CA.ISO8859-15
en_CA.US-ASCII
en_CA.UTF-8
en_GB
en_GB.ISO8859-1
en_GB.ISO8859-15
en_GB.US-ASCII
en_GB.UTF-8
en_IE
en_IE.UTF-8
en_NZ
en_NZ.ISO8859-1
en_NZ.ISO8859-15
en_NZ.US-ASCII
en_NZ.UTF-8
en_US
en_US.ISO8859-1
en_US.ISO8859-15
en_US.US-ASCII
en_US.UTF-8
es_ES
es_ES.ISO8859-1
es_ES.ISO8859-15
es_ES.UTF-8
et_EE
et_EE.ISO8859-15
et_EE.UTF-8
eu_ES
eu_ES.ISO8859-1
eu_ES.ISO8859-15
eu_ES.UTF-8
fi_FI
fi_FI.ISO8859-1
fi_FI.ISO8859-15
fi_FI.UTF-8
fr_BE
fr_BE.ISO8859-1
fr_BE.ISO8859-15
fr_BE.UTF-8
fr_CA
fr_CA.ISO8859-1
fr_CA.ISO8859-15
fr_CA.UTF-8
fr_CH
fr_CH.ISO8859-1
fr_CH.ISO8859-15
fr_CH.UTF-8
fr_FR
fr_FR.ISO8859-1
fr_FR.ISO8859-15
fr_FR.UTF-8
he_IL
he_IL.UTF-8
hi_IN.ISCII-DEV
hr_HR
hr_HR.ISO8859-2
hr_HR.UTF-8
hu_HU
hu_HU.ISO8859-2
hu_HU.UTF-8
hy_AM
hy_AM.ARMSCII-8
hy_AM.UTF-8
is_IS
is_IS.ISO8859-1
is_IS.ISO8859-15
is_IS.UTF-8
it_CH
it_CH.ISO8859-1
it_CH.ISO8859-15
it_CH.UTF-8
it_IT
it_IT.ISO8859-1
it_IT.ISO8859-15
it_IT.UTF-8
ja_JP
ja_JP.eucJP
ja_JP.SJIS
ja_JP.UTF-8
kk_KZ
kk_KZ.PT154
kk_KZ.UTF-8
ko_KR
ko_KR.CP949
ko_KR.eucKR
ko_KR.UTF-8
lt_LT
lt_LT.ISO8859-13
lt_LT.ISO8859-4
lt_LT.UTF-8
nl_BE
nl_BE.ISO8859-1
nl_BE.ISO8859-15
nl_BE.UTF-8
nl_NL
nl_NL.ISO8859-1
nl_NL.ISO8859-15
nl_NL.UTF-8
no_NO
no_NO.ISO8859-1
no_NO.ISO8859-15
no_NO.UTF-8
pl_PL
pl_PL.ISO8859-2
pl_PL.UTF-8
pt_BR
pt_BR.ISO8859-1
pt_BR.UTF-8
pt_PT
pt_PT.ISO8859-1
pt_PT.ISO8859-15
pt_PT.UTF-8
ro_RO
ro_RO.ISO8859-2
ro_RO.UTF-8
ru_RU
ru_RU.CP1251
ru_RU.CP866
ru_RU.ISO8859-5
ru_RU.KOI8-R
ru_RU.UTF-8
sk_SK
sk_SK.ISO8859-2
sk_SK.UTF-8
sl_SI
sl_SI.ISO8859-2
sl_SI.UTF-8
sr_YU
sr_YU.ISO8859-2
sr_YU.ISO8859-5
sr_YU.UTF-8
sv_SE
sv_SE.ISO8859-1
sv_SE.ISO8859-15
sv_SE.UTF-8
tr_TR
tr_TR.ISO8859-9
tr_TR.UTF-8
uk_UA
uk_UA.ISO8859-5
uk_UA.KOI8-U
uk_UA.UTF-8
zh_CN
zh_CN.eucCN
zh_CN.GB18030
zh_CN.GB2312
zh_CN.GBK
zh_CN.UTF-8
zh_HK
zh_HK.Big5HKSCS
zh_HK.UTF-8
zh_TW
zh_TW.Big5
zh_TW.UTF-8
C
POSIX

Hoffentlich hilft mir jemand weiter. :brav:
 
Wolfgang, du schreibst etwas vom exportieren?? Was soll ich den exportieren...

Gibt es irgendwo eine möglichkeit die locale "von Hand" ein zu stellen...?

Wo man das einstellt hängt von deiner Distro ab.

Ich hab hier grade Gentoo und da wird das in /etc/env.d/02locale definiert.

Das ist bei dir garantiert wo anders.

Code:
grep -ir lc_all /etc

sagt dir wo.
 
das locale wird da aber nicht mit aufgelistet, lediglich:

grep: /etc/cups/certs: Permission denied
grep: /etc/cups/classes.conf: Permission denied
grep: /etc/cups/printers.conf: Permission denied
grep: /etc/cups/printers.conf.O: Permission denied
grep: /etc/kcpassword: Permission denied
grep: /etc/master.passwd: Permission denied
grep: /etc/openldap/slapd.conf.default: Permission denied
grep: /etc/racoon/psk.txt: Permission denied
grep: /etc/racoon/remote/anonymous.conf: Permission denied
grep: /etc/sudoers: Permission denied

woran liegt das?!??!
 
Das grep musst du natürlich als root ausführen, wie fast alles was du in /etc machen willst.
 
in der Konsole:


eingeben, dann dein root-Passwort, dann obige grep-Anweisung.

Wenn du Ubuntu o.Ä. verwendest, dann

Code:
sudo grep -ir lc_all /etc

und dein USER-Password eingeben.

OH, und dringend mal Linux-Grundlagen aneignen.
 
Natürlich musst du den root-Benutzer unter MacOS X auch aktiviert haben, das geht unter

Programme / Dienstprogramme / NetInfo Manager / Sicherheit / Identifizieren... / root-Benutzer aktivieren
 
@Schlaubi:

Woher weisst du denn das er einen Mac hat?

Ging in meinen Beispielen davon aus das wir hier von Linux sprechen.

EDIT:

Alles klar, Codewarrior gibt es nicht für Linx.

Michi, du solltest jedesmal hinschreiben was für eine Plattform du nutzt.

Wie das unter Mac läuft weiss ich nicht.
 
Zuletzt bearbeitet:
Hallo,

danke für deine Hilfe! Und ja, du hast recht! Aber ich habe erst vor kurzem damit angefangen... deshalb diese umqualifizierten Fragen... (sorry!)

Ich habe es jetzt soweit hinbekommen, das ich micht als root anmelden kann und auch diesen befehlt nochmals ausgeführt, allerdings kommt da garnichts....??

Fehlt mir noch irgend ein Packet?

Gruß Michael
 
Wenn es Dir nur um das Umbenennen dieser Dateien geht, kannst Du vom Terminal aus
Code:
export LC_ALL=de_DE.ISO8859-1
eingeben und dann den rm- oder find-Befehl. Die linke Seite des '=' enthaelt dabei eine der Antworten von 'locale -a'. Das stellt die Sprache des Terminal auf den (deutschen) Iso-8859-1 Zeichensatz ein. Danach sollte das Terminal das 'mu'-Zeichen angeben koennen.
Wenn Du das permanent haben moechtest, koenntest Du obige Zeile in ~/.bashrc oder ~/.bash_profile eintragen.

Ob das die eleganteste Loesung ist, weiss ich allerdings nicht.
 

Ähnliche Themen

"Busy" SD-Karte, die eigentlich gern FAT32 formatiert werden würde

Cygwin läuft nicht mehr

Zurück
Oben