Converti un numero di file zip in rar?

5

Qualche suggerimento su come convertire decine di zip di file in formato rar ? App o strumento da riga di comando sono i benvenuti.

    
posta ohho 15.08.2012 - 12:11
fonte

2 risposte

5

Quello che potresti fare è creare un file batch che utilizzi RAR , un comando shareware utility di riga per mac (non ho trovato alcuna utility da riga di comando gratuita, ma RAR è disponibile come versione di prova).

Installazione del comando rar

Per installare RAR nel tuo terminale, copia semplicemente rar e unrar nella tua cartella bin .

Per accedere alla directory bin , apri Terminal.app e digita

open ­/bin

La versione Windows di RAR consente di "convertire" zip archivio in rar archivio in strumenti, ma la versione mac non sembra avere questa caratteristica. La soluzione sarebbe decomprimere ciascun file in cartelle separate e poi nel contenuto RAR di quelle cartelle subito.

La soluzione

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

Salva questo in un file senza estensione, assicurati di impostare i buoni percorsi nelle prime variabili e dovrebbe funzionare correttamente eseguendolo in terminal.app

Conclusione

Bene, ha funzionato per me.

Nota: questo script non è perfetto. Forse c'è un modo migliore, ma funziona;) quello era uno dei miei primi script di shell, probabilmente sarebbe stato meglio con i parametri, o andare con python;)

Spero che ti aiuti.

    
risposta data 15.08.2012 - 20:45
fonte
4

Ecco uno script più semplice come quello pubblicato da GabLeRoux. rar può essere scaricato da link .

#!/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
    
risposta data 15.08.2012 - 20:48
fonte

Leggi altre domande sui tag