diff --git a/move-[id]-to-end.bash b/move-[id]-to-end.bash new file mode 100644 index 0000000..6a8b515 --- /dev/null +++ b/move-[id]-to-end.bash @@ -0,0 +1,28 @@ +#!/bin/bash +for f in *; do + # Skip directories + [ -f "$f" ] || continue + + # Extract the ID inside () or [] + id=$(echo "$f" | sed -n 's/.*[([]\([^])]*\)[])].*/\1/p') + + # If there's no ID, skip + [ -z "$id" ] && continue + + # Remove the ID portion (and any leftover extra spaces) + base=$(echo "$f" | sed 's/[([][^])]*[])]//g' | sed 's/ / /g' | sed 's/ *$//') + + # Separate name and extension + name="${base%.*}" + ext="${base##*.}" + + # Rebuild new name (handle files with and without extensions) + if [ "$name" != "$ext" ]; then + newname="${name} [${id}].${ext}" + else + newname="${base} [${id}]" + fi + + # Only rename if different + [ "$f" != "$newname" ] && mv -- "$f" "$newname" +done