Dois tipos de aplicativos me vêm à mente onde os loops de shell não são considerados a melhor abordagem. O primeiro é o processamento de dados; muitas ferramentas (como sed , awk , perl , etc.) fazem o loop implicitamente e muito mais desempenho. A segunda é (como em seu código de amostra), onde algum código é executado para um conjunto de arquivos, onde find com a opção -exec também pode executar comandos (também um shell) com menos problemas e sobrecarga. Existem provavelmente mais casos, mas os dois mencionados já devem ser esclarecedores. Dito isto; loops de shell não são inerentemente ruins, ou algo assim. Apenas tome outras opções (como as duas mencionadas) em sua consideração.