A última vez que eu escrevi um script decente em bash foi em 2001. Lá se vão vários anos, até que eu esquecesse totalmente de como programar em bash. Tornei-me monolíngue em C.
Gozado, o que exige-se de um usuário de Windows é que saiba clicar no botão iniciar (ainda existe? Deixei de usar este "sistema" ainda na versão 95) e usar o pacote de escritórios da Microsoft. Já o que se exige de um usuário GNU/Linux é que ele tenha seja onisciente em computação... E isso é bom. Um dia chego à perfeição. :-D
Tive problemas com com arquivos cujos nomes continham espaços.
O delimitador de campos do bash é o espaço. Para lidar com nomes e strings contendo espaço (e fazer com que tudo seja interpretado como um único campo), podemos mudar para próxima linha.
A variável IFS é a responsável para mudar este delimitador.
Ao digitar no bash (por uma sessão), ou no script
IFS=$'\n' (ou IFS=$ \n) ,
altera-se o delimitador de campo, e aí conseguimos processar strings que contenham espaço, como nomes de arquivos com espaço.
\n é o caractere de próxima linha também no bash (velho conhecido de quem usa C).