rar2zip.sh
Publicado por Jarno Trulli 10/04/2008
[ Hits: 6.619 ]
Este é um script (ainda em construção!) que eu uso para transformar meus arquivos RAR para arquivos ZIP.
Eu o uso por que nem sempre eu tenho como abrir um arquivo RAR. Ele é bastante simples, meio monolítico, mas utilizável. Ainda precisa de umas melhorias, mas é bastante útil.
Usage: rar2zip.sh infile.rar
Dependências: unrar, zip, bash.
#!/bin/sh # # rar2zip.sh # Transforms a single RAR file, # passed under cmdline, # to an equivalent ZIP file, # storing it in the current directory # # Typical usage: rar2zip.sh infile.rar # #set -ex function usage { cat <<EOF Usage: rar2zip.sh infile.rar [-f] [-o outfile.zip] Modifies a RAR file to a ZIP file Options: -f force continuation (e.g. if RAR file is damaged) -o outfile Destination file (defaults to same filename as application, with .zip extension) -- Break cmdline parsing (useful if the filename starts with -) EOF } function cleanup { echo "Cleaning $1.." rm -rfv $1 } trap 'cleanup $TMPDIR' 2 15 CWD=$(pwd) TMPDIR=$(mktemp -d -p /tmp/ rar2zip.XXXXXX) if [ "$TMPDIR" = "" ] then echo "Error creating temporary dir!" exit 1 fi # Parse cmdline args while : do case $1 in -o) OUTFILE=$2 shift 2 ;; -f) FORCE=1 shift 1 ;; --) shift 1 break ;; *) echo "A fix to it in the future!" break ;; esac done if [ "$1" = "" ] then usage cleanup $TMPDIR exit 1 fi DEFAULT_ZIP_OPT="-v -9 -b /tmp/" ZIP_OPT=${ZIP_OPT:-$DEFAULT_ZIP_OPT} FILE_NAME=$1 BASE_NAME=$(basename $1) DIR_NAME=$(dirname $1) # If the target name doesn't start with /, # it is NOT the 'absolute' pathname -- # It is needed (or something equivalent) if [ "$(echo $DIR_NAME|grep -c -e'^/' )" = "0" ] then DIR_NAME=${CWD}/${DIR_NAME} fi ZIP_NAME=$(echo $BASE_NAME|sed -e's/\.[a-zA-Z0-9]\{1,\}$/\.zip/g') if [ "$(file $DIR_NAME/$BASE_NAME|grep -c -e'RAR archive')" != "1" ] then echo "The file $DIR_NAME/$BASE_NAME doesn't appear to be a RAR archive!" cleanup $TMPDIR exit 1 fi cd $TMPDIR rm -fr ${BASE_NAME}-dir mkdir -p ${BASE_NAME}-dir cd ${BASE_NAME}-dir unrar x $DIR_NAME/$BASE_NAME || { if [ "FORCE" != "yes" ] then echo "The file $TARGET_NAME/$BASE_NAME appears to be damaged. I will stop now" exit 1 else echo "The file $TARGET_NAME/$BASE_NAME appears to be damaged. I will continue anyway..." fi ; } #Zip the directory contents find . -type f| sort | zip -@ $ZIP_OPT $ZIP_NAME mv -- $ZIP_NAME $CWD rm -fr $TMPDIR
Script para instalação Gerix Wi-fi Cracker no Kali Linux
Instalando a última versão do Adobe Flashplayer automaticamente
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (4)
Bash ao invés de Fish no CachyOS (1)
Linux rodando do hd externo ou ssd? (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta