Здесь следует остерегаться того, что имена файлов unix могут содержать символы с любым 8-битным символьным значением, кроме '/' и '\ 0'.
Если вы хотите переместить любой файл, который имеет символ, не входящий в [AZ] или [az], или знак подчеркивания, используйте следующее:
for file in /home/*; do
filename=${file##*/}
[ -n "${filename//[A-Za-z_]/}" ] && mv "$file" failed/
done
Он работает, сначала удаляя путь к каталогу, оставляя только имя файла. Затем он удаляет все "допустимые" символы из имени файла. Если какие-либо символы остаются, то имя файла содержит недопустимый символ и будет перемещено.