Dans un terminal: cd
dans le répertoire en question, puis
for x in `ls -1 | sed -e 's/^\(.\).*/\1/' | sort -u`; do
mkdir $x && mv -i ${x}?* $x
done
Cela suppose qu'aucun fichier n'a un nom à un seul caractère avant que vous ne commenciez. Si c'est le cas, vous voudrez peut-être les déplacer avant d'exécuter la procédure ci-dessus:
mkdir singles && mv ? singles
et ensuite les déplacer vers leurs destinations appropriées par la suite.
Éditer: Voir les commentaires ci-dessous pour quelques avertissements. Si vous rencontrez des problèmes avec des lignes de commandes trop longues, vous pouvez remplacer la deuxième ligne par
mkdir $x && find . -maxdepth 1 -name "${x}?*" -exec mv -i {} $x \;