Skip to content

Instantly share code, notes, and snippets.

@aquilax
Created March 7, 2021 07:19
Show Gist options
  • Save aquilax/b69ef2ef2dba6a7e4de8ef46d1dc45e8 to your computer and use it in GitHub Desktop.
Save aquilax/b69ef2ef2dba6a7e4de8ef46d1dc45e8 to your computer and use it in GitHub Desktop.
#!/bin/bash
set -e
INPUT=$(realpath "$1")
INPUT_PATH=$(dirname "$INPUT")
TMP_DIR=$(mktemp -d -t tar-extract-XXXXX)
SRC_TMP_DIR="$TMP_DIR/in"
DST_TMP_DIR="$TMP_DIR/out"
mkdir -p "$SRC_TMP_DIR"
mkdir -p "$DST_TMP_DIR"
# Extract the archive
tar -xf $1 -C "$SRC_TMP_DIR"
while IFS= read -r -d $'\0'; do
FILE="$REPLY"
FILE_PATH=$(dirname $FILE)
FILE_NAME=$(basename "$FILE")
REL_PATH=$(realpath --relative-to="$SRC_TMP_DIR" "$FILE_PATH")
mkdir -p "$DST_TMP_DIR/$REL_PATH"
if [[ $(file -b "$FILE") =~ JPEG ]]; then
# JPEG FILE
mozjpeg -progressive -quality 75 "$FILE" > "$DST_TMP_DIR/$REL_PATH/$FILE_NAME"
else
cp "$FILE" "$DST_TMP_DIR/$REL_PATH/$FILE_NAME"
fi;
done < <(find "$SRC_TMP_DIR" -type f -print0)
pushd "$DST_TMP_DIR"
tar -cvf "$INPUT_PATH/optimized-$1" *
popd
rm -rf "$TMP_DIR"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment