A coisa a ser cuidadosa aqui é que os nomes dos arquivos unix podem conter caracteres com qualquer valor de caractere de 8 bits, exceto '/' e '\ 0'.
Se você quiser mover qualquer arquivo que tenha um caractere que não esteja em [A-Z] ou [a-z] ou um sublinhado, use o seguinte:
for file in /home/*; do
filename=${file##*/}
[ -n "${filename//[A-Za-z_]/}" ] && mv "$file" failed/
done
Funciona primeiro removendo o caminho do diretório, deixando apenas o nome do arquivo. Em seguida, elimina todos os caracteres 'legais' do nome do arquivo. Se algum caractere permanecer, o nome do arquivo conterá um caractere ilegal e será movido.