Portál AbcLinuxu, 28. října 2025 09:00
# dpkg-reconfigure locales ... [*] cs_CZ.UTF-8 UTF-8Dale v terminalu nastavit:
$ export LANG=cs_CZ.UTF-8A nakonec ZIP rozbalit windowsovym 7zipem spustenym pres wine:
$ wine 7za.exe e -scsUTF-8 soubor.zipResil jste to prosim nekdo? Mate na to jednodussi postup? Treba nejakym jinym nastrojem Diky
Řešení dotazu:
Pozri sa na príspevok. Podľa neho som si vytvoril script:
#!/usr/bin/env bash
#
# Script rozbali .zip subor, skovertuje cs/sk znaky a zbali ho do .7z
# alebo s prepinacom x rozbali .zip do aktualneho adresara
# potrebuje p7zip a convmv
#
# Su nainstalovane potrebne programy?
command -v 7z >/dev/null 2>&1 || { echo "Chyba program 7z (balik p7zip-full alebo p7zip)"; exit 1; }
command -v convmv >/dev/null 2>&1 || { echo "Chyba program convmv (balik convmv)"; exit 1; }
# spracovanie vstupnych parametrov
copy=false
if test $# -eq 0 -o $# -ge 2; then
if test "$1" = x -a $# -le 2; then
copy=true
shift
else
echo -e "Pouzitie:"
echo -e "zip27z subor.zip - zip sa skonvertuje do .7z"
echo -e "zip27z x subor.zip - zip sa robali do aktualneho adresara"
exit 1
fi
fi
# existuje subor?
zipfile="$1"
name=${zipfile%.*}
if test ! -f "$zipfile"; then
echo "Subor $zipfile neexistuje"
exit 1
fi
# rozbal zip, koverzia znakov
tmpdir=$(mktemp -d)
LANG=C 7z x -bso0 -bsp0 "$zipfile" -o"$tmpdir"
if test $? -ne 0 ;then
exit 1
fi
convmv -f CP852 -t UTF-8 -r --nfc --replace --notest "$tmpdir" \
2>&1 >/dev/null | grep -v "Ready!"
# kopirovat alebo zbalit do .7z
if test $copy = true; then
cp -r -i --preserve=timestamps "$tmpdir"/* .
else
7z a -bso0 "$name".7z "$tmpdir"/*
fi
# mazanie
rm -r $tmpdir
exit 0
zip27z skovertuje .zip do .7z#!/usr/bin/python
import zipfile
import sys
zipfile.ZipFile(sys.argv[1], 'r').extractall(sys.argv[2] if len(sys.argv) > 2 else '.')
A pak to pomocí convmv překóduju na co chci já:
python unzip.py archiv.zip
convmv -r -f cp852 -t utf8 rozzipovaný_adresář
unar -e CP852 soubor.zip
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.