blob: eb13d805767ea4e18ddc5285bc5f837d6e9b1816 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#!/bin/bash
#
# rar2zip conversion script
#
# Usage: rar2zip file [file ...]
# Example: rar2zip file.rar
function rar2zip() {
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"
unar "$OLDFILE" -o "${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
# Restore from "$HOME/.local/share/Trash"
gio trash "$OLDFILE"
echo "${OLDFILE}: A backup was made on $HOME/.local/share/Trash"
else
echo "${NEWNAME}: File exists!"
fi
done
echo "Conversion Done"
}
|