ZIP-ben ékezetes fájlnevek (félig megoldva)

Már megint szívatnak. Windows alatt létrehozott ékezetes fájlnevek kerültek bele egy szintén Windows alatti "tömörített mappába" - azaz egy ZIP-fájlba.

Én meg szórakozok újra, mert megint nem találom, hogy mi a bánatos franccal tudnám épelméjűen kicsomagolni. (Up-to-date Ubuntu 22.04-en.)

Se a standard 6.00-s unzip, se a szintén gyári repóból telepített 7zip (v16.02) nem szereti a neveket. Kriksz-krakszok jelennek meg helyette. Ami a dühítő, ezt átlag 5 évente újra és újra eljátszom, minden alkalommal meglepetésként hat rám a dolog, mert mintha korábban már megoldottam volna. Külön idegesítő, hogy elvben erre szolgálnának a 7z-hez tartozó -scc és -scs opciók, amik tetszőleges kombinációja számomra nem hoz eredményt. Nyilván valamit nagyon benézek, de vajon mit?

(Ráadásul most kivételesen az lenne az ideális, ha megmaradnának az ékezetek, és nem detox / convmv és társai lenne az igazi megoldás.)

Megoldás: unzip -O852 (esetleg -I1250) a megoldás; ami hátravan, kitalálni ugyanezt a 7-zip opcióival :-)

Hozzászólások

Válasz magamnak:

noha a dokumentációban nem szerepel, de az Ubuntu LTS-ben levő unzip ismeri a -O opciót (*) és ha megadom a -O852 opciót, akkor a fájlnevek gyönyörűek, pont ahogy kell.

Köszönöm a rávezetést.

Egy Solarisos unzip manual szerint 3 opció tartozna ehhez a témakörhöz: -I , -O és -0. Ebből az Ubuntu az I és O opciókat kezeli:

-I char-set: select ISO char-set

-O char-set: select OEM char-set

-0: do not transform names

Ebből a -0 (nulla) nincs implementálva - gondolom pont ez az alapértelmezés -, és úgy tűnik a Windows 10 tömörített mappa funkciója az OEM charset értéket állítja, ráadásul nem az újabban elterjedt CP1250-es, hanem a hagyományosabb CP852-t. Így most nekem a -O852 kellett (és remélem nem futok bele abba, hogy majd a -I1250 kell helyette).

/bin/ls -1 | while read name ; do  mv "$name" "$( echo $name | iconv -f cp852 -t utf-8 )" ; done

(Értelemszerűen recode cp852..utf8 is írható.)

Ez nem szép, de legalább ronda. De ha nem sikerült ezt az unzip -O-t vagy a 7zip opciókat működésre bírnom, akkor ez megoldja a dolgot. Nyilván nem ez az igazi, de a semminél már jobb. Persze lehetne helyette "convmv -f cp852 -t utf8 --notest *  "

FreeBSD-vel a tar xf egész jól ment néhány alkalommal ékezetes fájlnevekkel is (bár szerintem volt olyan is, amikor nem, lehet, hogy kódolásfüggő).

Látom már van megoldásod, de azért bedobok egy esetleges alternatívát: kicsomagolás után a convmv el tudja végezni a piszkos munkát.

<refrén>Törölni a francba, hátha idővel megérti a nyomorult user, hogy mit nem szabad.</refrén>

<refrén>Törölni a francba, hátha idővel megérti a nyomorult user, hogy mit nem szabad.</refrén>

ezt te irtad, nem celoztam en semmire, vilagosan leirtam: ha azt gondolod hogy 2023-ban ekezetes fajlok egy zipben ordogtol valo, mert a juzer "nyomorult" akkor a gond te vagy.

Teljesen off-topik: ha mondjuk előállítok Word-ben egy dokumentumot, ami egy levéltervezet az Alfa/Béta kft-től a Cica\Doggie zrt-nek, akkor ugye teljesen oké az a fájlnév, hogy "Alfa/Béta küldi Cica\Doggie-nak.docx' ?

Megint lemaradt a <sarcasm> tag, Sheldon. Arra akartam célozni, hogy ha azt be tudja fogadni a tudatunk, hogy a gép kedvéért egyes karaktereket el kell engednünk, akkor talán az sem megugorhatatlan, hogy azokra az emberekre is gondoljunk, akik más kontextusban az általunk jószándékúlag a fájlnévbe tett szóközök, vezérlőkarakterek, emojik, ékezetes betűk stb. miatt nehezebben vagy sehogy sem tudják használni a fájlt.

Milyen különbség? Azt hittem, megyeztünk abban, hogy ne korlátozzuk a fasságot, ha például a felhasználó a docx teljes bináris tartalmát akarja a fájlnévbe tenni, hát csak tegye bátran.

Egyébként én is épp ma kaptam ilyen jó kis fájlokat, csak hogy örüjjek, bameg:

$ ls -1
'FooBar Teszt Auth.crt'
'FooBar Teszt Auth.p12'
'FooBar B�lyegz�.crt'
'FooBar B�lyegz�.pem'

Csak úgy általában emberi hiba, vagy konkrétan valakinek az emberi hibája? A fájl előállítója a hibás szerinted, vagy aki az OS-t telepítette, vagy az, aki az egész áldozata? (Vagy csak simán beszólhatnékod volt, ami egy igen tiszteletre méltó indíték.)