for
não altera os diretórios para você. Você deve colocar ${dir}/
na frente de suas referências de arquivo e alterar algumas '
quotes para "
para permitir a interpretação da variável shell
for dir in $(find salford_* -type d);do
sed -e "1r ${dir}/MenuSettings.bak" -e '1,2d' ${dir}/MenuSettings.txt >> ${dir}/MenuSettings2.txt
sed '/^AppName: */{h;s///;x;}; /^\(AppName_.._..:\).*/{s///;G;s/\n/ /;}' ${dir}/MenuSettings2.txt >> ${dir}/MenuSettings3.txt
rm -v ${dir}/MenuSettings2.txt
mv -v ${dir}/MenuSettings3.txt ${dir}/MenuSettings.txt
done
Também removi um "Uso inútil de gato". Google que.