O problema é que você está lendo o arquivo com duas instâncias de read
- uma para ler o nome do arquivo e outra para obter a resposta. Portanto, o read
esperando pela resposta come cada segundo nome de arquivo, e você deve esperar que a lista de arquivos não se pareça com:
some_throuwaway_stuff
foo
very_important_file.txt
Yes
some_throuwaway_stuff
foo
Seu script provavelmente deve ser parecido com:
#!/bin/bash
echo "Give directory to search for ASCII text files"
read direct
exec 3<&0
find "$direct" -type f |
while IFS= read -r name; do
echo "========================================"
if file "$name" | grep ASCII; then
echo "----------------------------------------"
head "$name";
echo "----------------------------------------"
echo "Do you want to delete this file?"
read -u 3 want
case $want in
YES|Yes|yes|Y|y)
rm "$name"
;;
*)
;;
esac
fi
done
Observe o redirecionamento exec 3<&0
, que alimentará stdin
ao descritor de arquivo 3, que é então verificado no ciclo para resposta do usuário.
Dito isto, rm -i
é provavelmente uma opção melhor.