<===
2025-12-03 10:00:37
rename youtube labels recursive catalogs
$ cat ren-yt-recurse.sh
find . -type d -exec bash -c '
shopt -s nullglob
cd "$1" || exit 1
declare -A seen
for f in *.mp3 *.m4a; do
old=$f
base=${f%.*}
ext=.${f##*.}
new=$base
new=${new//\([^)]*\)/ }
new=${new//\[[^]]*\]/ }
new=${new// / }
new=${new## }
new=${new%% }
[[ "$new" == "$base" ]] && continue
target="$new$ext"
while [[ -e "$target" || -n "${seen[$target]:-}" ]]; do
i=${i:-1}
target="${new}_$i$ext"
((i++))
done
seen["$target"]=1
echo "$(pwd)/$old -> $(pwd)/$target"
mv -- "$old" "$target"
done
' _ {} \;