Existem vários problemas com o seu código:
- As variáveis de bash são usadas com
$VAR, observe o$na frente. Se você omitir o cifrão, ele será tratado como uma string normal. - A globalização de nome de arquivo do Bash precisa de um curinga (
*,?, etc.). Seu exemplo de.corresponderia à pasta., que é a pasta atual. - As variáveis são definidas com
VAR=VALUE. Não há espaço ao redor do sinal de igual.VALUEdeve ser citado se tiver espaços. - A concatenação de strings ocorre automaticamente. O sinal
+insere um literal+nessa posição. - As variáveis sempre devem ser usadas entre aspas duplas, a menos que você tenha um motivo para não fazê-lo.
Com esses pontos em mente, aqui está uma versão funcional do seu script.
cd /path/to/folder
for file in ./*
do
mv "$file" "NewPrefix$file"
done
Se condições
Se as condições forem usadas da seguinte forma:
if [[ "$file" == "New"* ]]
then
# Do something here
fi
Note que o asterisco está fora das aspas duplas.