¿Convertir un número de archivo zip a rar?

5

¿Alguna sugerencia de cómo convertir decenas de archivos zip a formato rar ? La aplicación o la herramienta de línea de comandos son bienvenidas.

    
pregunta ohho 15.08.2012 - 12:11

2 respuestas

5

Lo que podrías hacer es crear un pequeño archivo por lotes que usaría RAR , un comando shareware utilidad de línea para mac (no encontré ninguna utilidad de línea de comandos rar gratuita, pero RAR está disponible como versión de prueba).

Instalando el comando rar

Para instalar RAR en tu terminal, simplemente copia rar y unrar en tu carpeta bin .

Para obtener acceso al directorio bin , abra Terminal.app y escriba

open ­/bin

La versión de Windows de RAR permite "convertir" zip archive en rar archive en herramientas, pero la versión mac no parece tener esta característica. La solución sería descomprimir cada uno de los archivos en carpetas separadas y luego enviarlos al contenido RAR de esas carpetas de inmediato.

La solución

#!/bin/bash
# shell script that will convert zip files into rar files
# Require RAR for Mac os x to be placed in bin folder

# Working directory, use ~ for home folder shortcut :)
WorkingDirectory=~/test

# Temp directory that will be used for zip files manipulation
# Will prevent loop from raring other folders ;)
TempDirectory="${WorkingDirectory}"/zipToRarTemp

# Target Directory is where you want the rar files to go after the process
TargetDirectory="${WorkingDirectory}"

# Let's create the directories
mkdir "${TempDirectory}"
mkdir "${TargetDirectory}"

# Will loop into WorkingDirectory and unzip each .zip files
for file in "${WorkingDirectory}"/*.zip
do
    # Get file name
    # See http://stackoverflow.com/questions/965053/extract-filename-and-extension-in-bash
    # 1st answer
    filename=$(basename "$file")
    extension="${filename##*.}"
    filename="${filename%.*}"

    # Temp folder in the loop
    tempFolderToRar="${TempDirectory}"/"${filename}"

    # Create folders to rar later
    mkdir "${tempFolderToRar}"

    # unzip -d folder/extract/to fileToExtract.zip
    unzip -d "${TempDirectory}"/"${filename}" "${file}"

    # rar all the files in tempFolderToRar into the target
    rar a "${TargetDirectory}"/"${filename}".rar "${tempFolderToRar}"
done

# Optionnaly, delete temp directory if different from target
if [ "${TempDirectory}" != "${TargetDirectory}" ]
    then
    rm -r "${TempDirectory}"
fi

Guarde esto en un archivo sin extensión, asegúrese de establecer las rutas correctas en las primeras variables y debería funcionar correctamente ejecutándolo en terminal.app

Conclusión

Bueno, funcionó para mí.

Nota: este script no es perfecto. Tal vez haya una mejor manera, pero funciona;) esa fue una de mis primeras secuencias de comandos de shell, probablemente sería mejor con los parámetros, o iría con python;)

Espero que ayude.

    
respondido por el GabLeRoux 15.08.2012 - 20:45
4

Aquí hay un script más simple como el publicado por GabLeRoux. rar se puede descargar desde enlace .

#!/bin/bash

for f in ~/Desktop/*.zip; do
    d=/tmp/$(uuidgen)
    unzip "$f" -d $d
    cd "$d"
    rm -rf __MACOSX
    ~/bin/rar a "${f%zip}rar" *
    rm -r "$d"
done
    
respondido por el user495470 15.08.2012 - 20:48

Lea otras preguntas en las etiquetas