Non sono consentiti spazi bianchi attorno a = in un compito.
dir="${file%%.*}"
Al contrario, gli spazi bianchi sono obbligatori in un test.
if [ -e $dir ]; then
^ ^
Per quanto riguarda i miglioramenti stilistici, non fa male fare un mkdir -p non necessario , così puoi sbarazzarti del if dichiarazione.
Le virgolette non sono richieste in un compito, quindi puoi rimuoverle dal dir= linea. Le citazioni sono comunque una buona idea ovunque, quindi non eliminare le altre virgolette.
Potrebbe essere utile aggiungere un ulteriore .* al ciclo for. In questo modo, se esegui lo script più di una volta, non tenterà di spostare le sottodirectory appena create. E un bel trucco (sebbene non necessariamente un miglioramento) è accorciare BR*.* W0*.* a {BR,W0}*.* .
for file in {BR,W0}*.*; do
dir=${file%%.*}
mkdir -p "$dir"
mv "$file" "$dir"
done