5 votos

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

¿Cualquier sugerencia de cómo convertir decenas de zip archivos de rar formato? Herramienta de aplicación o línea de comandos son bienvenidos.

6voto

GabLeRoux Puntos 125

Lo que puedes hacer es crear un pequeño archivo de proceso por lotes que haría uso de la RAR, una shareware utilidad de línea de comandos para mac (no he podido encontrar ningún libre rar utilidad de línea de comandos, pero RAR está disponible como versión de prueba).

Instalar rar comando

Para instalar RAR en su terminal, simplemente copie rar y unrar en su bin carpeta.

Para obtener acceso a la bin directorio, abrir Terminal.aplicación y tipo de

open ­/bin

La versión de Windows de RAR permite "convertir" zip archivo rar archivo en herramientas, pero la versión de mac no parece tener esta característica. La solución sería descomprimir cada uno de los archivos en carpetas separadas y, a continuación, a RAR el contenido 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

Guardar esto en un archivo sin extensión, asegúrese de establecer las buenas rutas de acceso en el primer variables y debería funcionar bien ejecutando en la terminal.aplicación

Conclusión

Bueno, a mí me funcionó.

Nota: este script no es perfecto. Tal vez hay una manera mejor, pero funciona ;) que fue uno de mis primeros secuencia de comandos de shell, probablemente sería mejor con los parámetros, o ir con python ;)

Espero que ayude.

4voto

Aquí está un script más simple como la publicada por GabLeRoux. rarpuede ser descargado de http://www.rarlab.com/download.htm.

#!/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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X