Files
Server-scripts/audiobook_metadata/rename_audiobooks.sh
T
2026-09-14 12:43:38 +02:00

31 lines
933 B
Bash

#!/usr/bin/env bash
find . -type d | while read -r dir; do
name=$(basename "$dir")
# Match Disc1, Disc01, disc02, CD1, cd01, etc.
if [[ $name =~ (^|[[:space:]._-])([Dd]isc|[Cc][Dd])0*([0-9]+)$ ]]; then
cdnum="${BASH_REMATCH[3]}"
parent=$(dirname "$dir")
parentname=$(basename "$parent")
find "$dir" -maxdepth 1 -type f | while read -r file; do
filename=$(basename "$file")
ext="${filename##*.}"
base="${filename%.*}"
# If there's only one file in the folder, omit the original basename.
if [[ $(find "$dir" -maxdepth 1 -type f | wc -l) -eq 1 ]]; then
newname="CD${cdnum}.${ext}"
else
newname="CD${cdnum}.${base}.${ext}"
fi
echo "$file" "$parent/$newname"
cp "$file" "$parent/$newname"
done
else
echo "$name"
fi
done