5 votes

Convertir un certain nombre de fichiers zip en fichiers rar ?

Une suggestion sur la manière de convertir des dizaines de zip vers rar format ? Une application ou un outil de ligne de commande sont les bienvenus.

6voto

stphven Points 133

Ce que vous pourriez faire, c'est créer un petit fichier batch qui utiliserait RAR un utilitaire de ligne de commande shareware pour mac (je n'ai pas trouvé d'utilitaire de ligne de commande rar gratuit, mais RAR est disponible en version d'essai).

Installation de la commande rar

Pour installer RAR dans votre terminal, il suffit de copier rar et unrar dans votre bin dossier.

Pour accéder à la bin ouvrez Terminal.app et tapez

open ­/bin

La version Windows de RAR permet de "convertir" zip archives en rar dans les outils, mais la version mac ne semble pas avoir cette fonctionnalité. La solution consisterait à décompresser chacun des fichiers dans des dossiers distincts, puis de procéder immédiatement au RAR du contenu de ces dossiers.

La solution

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

Sauvegardez ceci dans un fichier sans extension, assurez-vous de définir les bons chemins dans les premières variables et cela devrait fonctionner correctement en l'exécutant dans terminal.app.

Conclusion

Eh bien, cela a fonctionné pour moi.

Note : ce script n'est pas parfait. Il y a peut-être une meilleure façon, mais ça marche ;) c'était l'un de mes premiers script en shell, ce serait probablement mieux avec des paramètres, ou avec Python ;)

J'espère que cela vous aidera.

4voto

Voici un script plus simple comme celui posté par GabLeRoux. rar peut être téléchargé à partir 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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X