#!/bin/bash # # rar2zip conversion script # Based on: https://shkspr.mobi/blog/2016/12/converting-rar-to-zip-in-linux/ # # Usage: rar2zip.sh file [file ...] echo "Converting RARs to ZIPs" # Use RAM disk for temporary files. WORKDIR="/dev/shm/" for INFILE in "$@"; do # Absolute path to old file OLDFILE=`realpath "${INFILE}"` # Get the file name without the extension BASENAME=`basename "${OLDFILE%.*}"` # Path for the file. The ".zip" file will be written there. DIRNAME=`dirname "$OLDFILE"` # Name of the .zip file NEWNAME="${DIRNAME}/$BASENAME.zip" if [ ! -e "${NEWNAME}" ]; then # Set name for the temp dir. This directory will be created under WORKDIR TEMPDIR=`mktemp -p "$WORKDIR" -d` # Create a temporary folder for unRARed files echo "Extracting $OLDFILE" rar x "$OLDFILE" "${TEMPDIR}/" # Zip the files with maximum compression 7z a -tzip -mx=9 "$NEWNAME" "${TEMPDIR}/*" # Alternative. MUCH SLOWER, but better compression # 7z a -mm=Deflate -mfb=258 -mpass=15 -r "$NEWNAME" * # Preserve file modification time touch -r "$OLDFILE" "$NEWNAME" # Delete the temporary directory rm -r "$TEMPDIR" # OPTIONAL. Safe-remove the old file #gio trash "$OLDFILE" else echo "${NEWNAME}: File exists!" fi done echo "Conversion Done"