In un terminale: cd
nella directory in questione, quindi
for x in 'ls -1 | sed -e 's/^\(.\).*//' | sort -u'; do
mkdir $x && mv -i ${x}?* $x
done
Ciò presuppone che nessun file abbia un nome di singolo carattere prima di iniziare. Se lo fanno, puoi spostarli da parte prima di eseguire la procedura sopra riportata:
mkdir singles && mv ? singles
e poi spostali verso le loro destinazioni appropriate a poppa.
Modifica: vedi i commenti sotto per alcuni avvertimenti. Se si verificano problemi con righe di comando troppo lunghe, è possibile sostituire la seconda riga con
mkdir $x && find . -maxdepth 1 -name "${x}?*" -exec mv -i {} $x \;