Fórum Ubuntu CZ/SK

Ostatní => Tipy a triky pro Linux => Téma založeno: fish 16 Června 2010, 12:20:08

Název: Zip - správna diakritika po rozbalení
Přispěvatel: fish 16 Června 2010, 12:20:08
Po rozbalení archívu zip súbory, ktoré majú v názve diakritiku majú zlé názvy.
Vytvoril som script ktorý prevedie zip archív na 7-zip. S tým sa dá pracovať v Linuxe bez problémov.

1)
Treba nainštalovať 7zip
Kód: [Vybrat]
sudo apt-get install p7zip-full
2)
Nahrať z edisk 32bit/64bit unzip 5.52 + script
http://www.edisk.sk/stahni/29547/zip27z_32.7z_45.93KB.html
http://www.edisk.sk/stahni/05549/zip27z_64.7z_52.97KB.html

3)
Rozbaliť archív, potom
Kód: [Vybrat]
mv unzip ~/bin/unzip
mv zip27z ~/.gnome2/nautilus-scripts/Konverzia\ zip\ na\ 7z
odhlásiť/prihlásiť sa (alebo reštart)

4)
Uznačiť .zip archívy v nautilus, pravé tlačítko myši, skripty, Konverzia zip na 7z
Zip archívy sa presunú do koša.

Na edisk balíky vydržia mesiac, potom treba
Script zip27z vytvoriť
Kód: [Vybrat]
#! /bin/bash
#
# Script rozbali subor .zip, zbali subory do .7z
# Subor .zip sa presunie do kosa (pokial je povoleny kos)
# Potrebuje baliky: unzip 5.52 z ubuntu 9.10, zenity, 7zip
#
# Limity:
# - spracuje archivy .zip zadané v príkazovom riadku (nepozna *)
# - iba znaky z CP1250/Latin2 ruske, cinske... nedokaze
#
# prikaz:
# for i in *.zip; do zip27z "$i"; done
# prevod vsetkych .zip v adresari.
#
# prikaz:
# bash -c 'shopt -s nocaseglob; for i in *.zip; do zip27z "$i"; done'
# prevod vsetkych .zip .ZIP .Zip ... v adresari.
#

CWD=`pwd`

## Funkcia prebal :)
##
prebal ()
{

TMPDIR=`mktemp -d`
NAME=${1%.*}
FILE7z=$NAME.7z
cd $TMPDIR

## Existuje subor?
if [ ! -f "$CWD/$1" ] ;then
   zenity --error --text="Subor neexistuje\nSubor: $1"
   rm -rf $TMPDIR
   return 1
fi

## Je to zip?
QWE=`file -b --mime-type "$CWD/$1" | grep application/zip`
if [ $? -ne 0 ] ;then
   zenity --error --text="Subor nie je zip archiv\nSubor: $1"
   rm -rf $TMPDIR
   return 1
fi

## Treba heslo?
QWE=`unzip -Z -s "$CWD/$1" | grep \\\-r | cut -b 30-32 | grep -E 'T|B' | wc -l`
if [ $QWE -ne 0 ] ;then
   PASSWORD=`zenity --entry --title="$1" --text="Zadaj heslo pre archív $1" --hide-text`
   if [ $? -ne 0 ] ;then
      rm -rf $TMPDIR
      return 1
   fi
else
   PASSWORD="a"
fi

## Rozbalenie zip archivu
unzip -O CP852 -P $PASSWORD "$CWD/$1"
if [ $? -ne 0 ] ;then
   zenity --error --text="Chyba pri rozbalovani (zle heslo?)\nSubor: $1"
   rm -rf $TMPDIR
   return 1
fi

## Zbalenie do 7z archivu
7z a "$FILE7z" *
if [ $? -ne 0 ] ;then
   zenity --error --text="Chyba pri kompresii\nSubor: $FILE7z"
   return 1
fi

## Vymena zip a 7z
mv "$FILE7z" "$CWD"
cd "$CWD"
rm -rf $TMPDIR
gvfs-trash "$CWD/$1"
}

## Program - zaciatok
##
if [ "$1" = "" ]; then
   echo "Pouzitie: zip27z subor.zip [subor1.zip]..."
   exit 1
fi

## Spravny unzip?
QWE=`unzip -h | grep \\\-O`
if [ $? -ne 0 ] ;then
   zenity --error --text="Nespravny unzip\nTreba unzip 5.52 z KK"
   rm -rf $TMPDIR
   exit 1
fi

## Vsetky subory
while [ "$1" ]; do
   prebal "$1"
   shift
done

exit 0

Vytiahnuť unzip z balíku unzip_5.52-12ubuntu1_amd64.deb (alebo unzip_5.52-12ubuntu1_i386.deb)

V termináli sa dá rozbaliť zip
unzip -O CP852 balík.zip
Název: Re: Zip - správna diakritika po rozbalení
Přispěvatel: JackuPB 28 Března 2011, 22:34:09
Jelikož vůbec nemám ponětí o tom, k čemu jsou skripty a jak fungují, nemám ani ponětí, jak se vůbec vytvářejí. Proto bych chtěl poprosit, zda by mi někdo nemohl ten skript nahrát na net už hotový tak, jak byl na tom edisku...
Díky moc
Název: Re: Zip - správna diakritika po rozbalení
Přispěvatel: fish 05 Dubna 2011, 17:31:01
Napíš aký máš systém (32/64 bit), pridám script+unzip na edisk. Ak nevieš, daj sem výpis príkazu
Kód: [Vybrat]
uname -a
Název: Re: Zip - správna diakritika po rozbalení
Přispěvatel: JackuPB 01 Června 2011, 16:55:45
Kód: [Vybrat]
Linux jakub-ntb 2.6.32-31-generic #61-Ubuntu SMP Fri Apr 8 18:24:35 UTC 2011 i686 GNU/Linux