#!/bin/bash # Usage: # ./rename-tarball original-name.tar.gz new-name.tar.gz set -euo pipefail IFS=$'\n\t' positional_args=() while [[ "$#" -gt 0 ]]; do arg="${1}" case "${arg}" in -h|--help) print_usage exit 0 ;; *) positional_args+=("$1") shift ;; esac done if [[ -z "${positional_args[0]:-}" ]]; then echo "error: missing original tarball name" exit 1 fi original_path=$(readlink -f "${positional_args[0]:-}") original_name=$(basename "$original_path") new_name=${positional_args[1]:-} if [[ -z ${new_name} ]]; then echo "error: missing new tarball name" exit 1 fi original_name=${original_name/%.tar.gz} new_name=${new_name/.tar.gz} echo "Original: ${original_name}.tar.gz" echo "New name: ${new_name}.tar.gz" mkdir "temp-${new_name}" pushd "temp-${new_name}" tar xf "${original_path}" mv -- * "${new_name}" tar czf ../"${new_name}.tar.gz" "${new_name}" rm -rf "${new_name}" popd rmdir "temp-${new_name}"