Попробуйте этот кусок магии оболочки:
for i in *.*; do BASE=$(basename "$i" .ext2) LIST=*/"$".* DIR=$(dirname "$") mv -n "$i" "$" done
Или как вкладчик:
for i in *.*; do mv -n "$i" "$(dirname */"$(basename "$i" .ext2)".*)"; done
До:
whitequark@forth:~/test$ ls * test 1.ext2 test 2.ext2 test 3.ext2 f 1: test 1.ext f 2: test 2.ext test 3.ext
После:
whitequark@forth:~/test$ ls * f 1: test 1.ext test 1.ext2 f 2: test 2.ext test 2.ext2 test 3.ext test 3.ext2
-n
Выключатель защитит вас от перезаписи ничего.