Каждый напишет такое?
#!/bin/bash
mkdir -v `LANG=ru.ru_UTF8 find ./ -maxdepth 1 -type f | sed -e 's/\.\///' |grep -e ^[^[:digit:]] | sed -e 's/^\([^0-9 ][^0-9\-\+\_]*\)\(\ *[-].*\)/\1/g;s/ /_/g'| grep -v [.]...$| sed 's/[A-Z]/\l&/gi' | sort | uniq`
dir_list=`find ./ -type d -maxdepth 1`
file_list=`find ./ -type f -maxdepth 1 | sed 's/[A-Z]/\l&/gi'`
for dl in $dir_list ; do
old_dl=$dl
dl=`echo $dl | sed -e 's/_/\ /g;s/\.\///'`
echo dl=$dl
find ./ -maxdepth 1 -type f -iname "$dl*" -exec mv '{}' $old_dl/ \;
done
Писал в пьяном бреду