Filnavne med ÆØÅ til UTF-8

Alle tekniske spørgsmål som ikke hører ind under de andre fora.
elsdyr
Indlæg: 4
Tilmeldt: 2. jan 2010, 19:44
IRC nickname: elsdyr

Filnavne med ÆØÅ til UTF-8

Indlæg af elsdyr »

Hej venner
Jeg forsøger at ryde lidt op i en række filer, hvis filnavne er gået lettere i smadder.
Det drejer sig om filer, der vist nok stammer fra en gammel Windows-installation (98/XP), som på et tidspunkt er blevet flyttet til en EXT2-partition. Jeg formoder, det er her, det er gået galt.

Et udklip af ls giver:

Kode: Vælg alt

./PETERSEN FR’SNING, B_'GEV’NGET 1 , 20 10 02.xls
./BJERREG?RD ,SKOVB’KVEJ 1, 01 02 00.doc
./test’?_'

og jeg søger at lave et script, der omdøber dem til:

Kode: Vælg alt

./PETERSEN, FRÆSNING, BØGEVÆNGET 1 , 20 10 02.xls
./BJERREGÅRD ,SKOVBÆKVEJ 1, 01 02 00.doc
./testÆÅØ

Jeg har kastet dette shell script sammen:

Kode: Vælg alt

#!/bin/bash
STI=.

AE=’
OE=_\'
AA=

find "$STI" -iname "*[$OE$AE$AA]*" -print

Bemærk: AA=Unicode-karakteren U+8F, og at ls skriver selvsamme som ?

Scriptet finder de ramte filer (dem med tegnene for AE, OE, AA). Så langt, så godt.
Nu skal jeg så forsøge at få det til at omdøbe dem.

Der har jeg kigget på pakken conmv.

Kode: Vælg alt

$ convmv --nosmart -f cp850 -t utf8 test’_\'
Your Perl version has fleas #37757 #49830
Starting a dry run without changes...
mv "./test’_'"   "./testÔÇÖ┬Å_'"
No changes to your files done. Use --notest to finally rename the files.


Jeg har prøvet med nogle forskellige from (-f) encodings, men ingen af dem, ser ud til at virke. Er der nogen, der kan hjælpe mig med at finde ud af, hvordan jeg får mine filer givet deres rigtige navn? Hvilken encoding brugte man typisk på en dansk Windows-version den gang, hvis ikke det var cp850/cp858
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: Filnavne med ÆØÅ til UTF-8

Indlæg af lath »

elsdyr skrev:Hej venner
Jeg forsøger at ryde lidt op i en række filer, hvis filnavne er gået lettere i smadder.
Det drejer sig om filer, der vist nok stammer fra en gammel Windows-installation (98/XP), som på et tidspunkt er blevet flyttet til en EXT2-partition. Jeg formoder, det er her, det er gået galt.

Et udklip af ls giver:

Kode: Vælg alt

./PETERSEN FR’SNING, B_'GEV’NGET 1 , 20 10 02.xls
./BJERREG?RD ,SKOVB’KVEJ 1, 01 02 00.doc
./test’?_'

og jeg søger at lave et script, der omdøber dem til:

Kode: Vælg alt

./PETERSEN, FRÆSNING, BØGEVÆNGET 1 , 20 10 02.xls
./BJERREGÅRD ,SKOVBÆKVEJ 1, 01 02 00.doc
./testÆÅØ

Jeg har kastet dette shell script sammen:

Kode: Vælg alt

#!/bin/bash
STI=.

AE=’
OE=_\'
AA=

find "$STI" -iname "*[$OE$AE$AA]*" -print

Bemærk: AA=Unicode-karakteren U+8F, og at ls skriver selvsamme som ?

Scriptet finder de ramte filer (dem med tegnene for AE, OE, AA). Så langt, så godt.
Nu skal jeg så forsøge at få det til at omdøbe dem.

Der har jeg kigget på pakken conmv.

Kode: Vælg alt

$ convmv --nosmart -f cp850 -t utf8 test’_\'
Your Perl version has fleas #37757 #49830
Starting a dry run without changes...
mv "./test’_'"   "./testÔÇÖ┬Å_'"
No changes to your files done. Use --notest to finally rename the files.


Jeg har prøvet med nogle forskellige from (-f) encodings, men ingen af dem, ser ud til at virke. Er der nogen, der kan hjælpe mig med at finde ud af, hvordan jeg får mine filer givet deres rigtige navn? Hvilken encoding brugte man typisk på en dansk Windows-version den gang, hvis ikke det var cp850/cp858


Det er cp1252 der bruges på en DK Win XP dåse.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
elsdyr
Indlæg: 4
Tilmeldt: 2. jan 2010, 19:44
IRC nickname: elsdyr

Re: Filnavne med ÆØÅ til UTF-8

Indlæg af elsdyr »

Tak for svaret. Du havde ret I, hvad du sagde. Desværre var det ikke convmv -f cp1252 -t utf8 der skulle til for at fikse filnavnene som forventet. Jeg spekulerer på, om det skyldes, at de er blevet "omdøbt" af flere omgange. Jeg endte op med at bruge kommandoen rename, som gjorde jobbet - omend på den beskidte måde. Jeg smider scriptet her, hvis nogen ender i samme situation engang.

Kode: Vælg alt

#!/bin/bash

STI=.

AE=’
OE=_\'
OE2=_
AA=

#løkkerne her skyldes at 'rename' kun laver en substitution per udførsel
   for i in {1..10}
   do
      rename -v "s/$AA/Å/" *.*
   done

   for i in {1..10}
   do
      rename -v "s/$OE/Ø/" *.*
   done

   for i in {1..10}
   do
      rename -v "s/$AE/Æ/" *.*
   done

   for i in {1..10}
   do
      rename -v "s/$OE2/Ø/" *.*
   done


exit 0