#!/bin/bash set -eu set -o pipefail function usage { retval="$1" case "$retval" in 0) ;; *) exec 1>&2 ;; esac echo "Usage: $0 movie_file1_to_fix movie_file2_to_fix ... movie_filen_to_fix" exit "$retval" } case "$1" in -h|--help) usage 0 ;; --) # Allow arguments following this one to start with a - shift ;; -*) echo "$0: Unrecognized option: $1" 1>&2 usage 1 ;; esac for filename in "$@" do case "$filename" in *.ogm|*.mkv) mv "$filename.failed" "$filename" if [ -f "$filename.rip-output" ] then xz -f "$filename.rip-output" fi ;; *.ogm.|*.mkv.) # shellcheck disable=SC2001 target_filename=$(echo "$filename" | sed 's/\.$//') mv "${filename}failed" "$target_filename" if [ -f "${filename}rip-output" ] then xz -f "${filename}rip-output" fi ;; *.ogm.failed|*.mkv.failed) # shellcheck disable=SC2001 target_filename=$(echo "$filename" | sed 's/\.failed$//') mv "${target_filename}.failed" "$target_filename" if [ -f "${target_filename}.rip-output" ] then xz -f "${target_filename}.rip-output" fi ;; *) { echo "$0: Unrecognized filename format: $filename" echo "Recognized forms:" echo " foo.mkv" echo " foo.mkv." echo " foo.mkv.failed" echo " foo.ogm" echo " foo.ogm." echo " foo.ogm.failed" } 1>&2 esac done