Nasel jsem skript, ktery resi rozbalovani zip souboru a zohlednuje jine kodovani nazvu nez utf8. U nekterych souboru vsak vytvori nazev jen z casti souboru. Zjistil jsem, ze kdyz z radku: eval LANG="C" 7z x "$CWD/$1" odstranim "eval LANG="C"" tak se vytvori nazev korektne.
Nazev , ktery se pri pouziti skriptu skrati: Child L. - Ledová kletba.doc -> Child L. - Ledov
Nazev , ktery se pri pouziti skriptu neskrati: Kuttner, Henry - Elak z Atlantidy.doc -> Kuttner, Henry - Elak z Atlantidy.doc
Asi to bude tou teckou, ale nejak me nenapada proc?
#! /bin/bash
#
# Script rozbali subor .zip, prekoduje nazvy suborov a adresarov
# alebo rozbali subor .rar
# Potrebuje baliky: p7zip-full convmv unrar
#
# Limity:
# - spracuje jeden subor, nepozna *
# - nerozbali spravne zip z Linuxu - ine kodovanie
# - v zipe skonvertuje iba znaky z CP1250/Latin2
#
CWD=`pwd`
## Je zadany parameter?
if [ "$1" = "" ]; then
echo "Pouzitie: 7unzip subor"
exit
fi
## Existuje subor?
if [ ! -f "$CWD/$1" ] ;then
echo "Subor $1 neexistuje"
exit 1
fi
## Je to zip?
QWE=`file -b --mime-type "$CWD/$1" | grep application/zip`
if [ $? -eq 0 ] ;then
TMPDIR=`mktemp -d`
cd $TMPDIR
eval LANG="C" 7z x "$CWD/$1"
if [ $? -eq 0 ] ;then
convmv --notest -r -f cp852 -t utf8 *
cp -a * "$CWD"
else
echo "Subor $1 sa nerozbalil"
fi
cd "$CWD"
#rm -rf $TMPDIR
exit 0
fi
## Je to rar?
QWE=`file -b --mime-type "$CWD/$1" | grep application/x-rar`
if [ $? -eq 0 ] ;then
unrar x "$CWD/$1"
exit 0
fi
echo "Subor nie je archiv zip/rar"
exit 1