Byta filnamn med konstiga åäö

perstromgren
Inlägg: 48
Blev medlem: 18 nov 2006, 19:47

Byta filnamn med konstiga åäö

Inlägg av perstromgren »

Hej,

Jag har en del gamla filer i mitt arkiv som skapats under diverse WIndows-OS. De har då fått en konstig kodning av å,ä och ö i filnamne.

Exempel: filen som borde heta "nästa nummer" har unixfilnamnet "n\#204sta nummer"
("#\204" verkar vara ett tecken.)

Denna kodning upprör en hel del program, till exempel rsync.

1. Hur kan jag döpa om dessa filer med något kommando som använder ett listigt reguljärt uttryck så att det kan täcka både å, ä och ö?
2. Hur ser en find+exec ut som traverserar filträdet och döper om enligt ovan?

Om 2 är för mycket begärt så duger 1 fint, det är inte så förfärligt många.

Tack för all hjälp!

Per
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Byta filnamn med konstiga åäö

Inlägg av Konservburk »

Kod: Markera allt

#!/bin/bash
find . -print0 |
while read -d '' i
do if j=$(echo "$i" | iconv -f cp437 -t utf8 2>&-)
   then test "x$i" = "x$j" || test -e "$j" || mv -- "$i" "$j"
   fi
done
Helt otestat, men det här är iaf tanken... "$i" är det gamla filnamnet och "$j" är det nya filnamnet, dvs det gamla filnamnet översatt med iconv -f cp437 -t utf8. Byt helt enkelt det gamla filnamnet till det nya omm "$i" och "$j" är olika och "$j" inte redan är upptaget.
al69dente
Inlägg: 3
Blev medlem: 15 jun 2008, 22:12
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS

Re: Byta filnamn med konstiga åäö

Inlägg av al69dente »

Hm.
Ett annat problem - jag har installerat Ubuntu via wubi så att det ligger parallellt med Vista som en virtuell partition (hoppas jag fått termerna rätt här).

Kataloger med åäö på Windowsdisken kommer jag inte åt alls från Ubuntu, utan jag har varit tvungen att byta namn i Windows Vista.

Finns det något enklare sätt att komma åt katalogerna och filerna i dem?
perstromgren
Inlägg: 48
Blev medlem: 18 nov 2006, 19:47

Re: Byta filnamn med konstiga åäö

Inlägg av perstromgren »

Tack, Konservburk!

iconv(1) var pusselbiten jag inte kände till. Tack också för skissen på skriptet, det bör fungera som det står, men jag ska skriva in det och pröva. En liten detalj: är det uppenbart att det är cp437-kodningen som visar sig i mitt fall? Känner du igen koden som jag gav i exemplet?

Nåja, jag ska pröva så fort jag får tillfälle.

Förresten, varför vägrar flera program att öppna en fil med cp437-kodade filnamn?

Tack igen!

Per.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Byta filnamn med konstiga åäö

Inlägg av Konservburk »

perstromgren skrev:är det uppenbart att det är cp437-kodningen som visar sig i mitt fall? Känner du igen koden som jag gav i exemplet?
Jag vet av erfarenhet att om svenska tecken återges som \204 \206 \216 \217 \224 \231 så är det cp437 där det borde vara iso8859-1/utf8 istället.
perstromgren skrev:Förresten, varför vägrar flera program att öppna en fil med cp437-kodade filnamn?
Antagligen för att det helt saknas utskrivbara tecken mellan \200 och \240 i iso8859-1/utf8.
Skriv svar

Återgå till "För nybörjaren - inaktuell"