Probiere dieses Stück Muschelmagie aus:
for i in *.*; do BASE=$(basename "$i" .ext2) LIST=*/"$".* DIR=$(dirname "$") mv -n "$i" "$" done
Oder als Oneliner:
for i in *.*; do mv -n "$i" "$(dirname */"$(basename "$i" .ext2)".*)"; done
Vor:
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
Nach dem:
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
Der -n
Schalter schützt Sie vor dem Überschreiben.