No se permiten espacios en blanco alrededor del =
en una tarea.
dir="${file%%.*}"
Por el contrario, los espacios en blanco son requeridos en una prueba.
if [ -e $dir ]; then
^ ^
En cuanto a las mejoras estilísticas, no está de más hacer un mkdir -p
innecesario , para que puedas deshacerte del if
declaración.
No se requieren comillas en una tarea, por lo que puede eliminarlas del dir=
línea. Sin embargo, citar es una buena idea en cualquier otro lugar, así que no elimine las otras citas.
Podría ser bueno agregar un .*
extra al bucle for. De esa forma, si ejecuta el script más de una vez, no intentará mover esos subdirectorios recién creados. Y un buen truco (aunque no necesariamente una mejora) es acortar BR*.* W0*.*
a {BR,W0}*.*
.
for file in {BR,W0}*.*; do
dir=${file%%.*}
mkdir -p "$dir"
mv "$file" "$dir"
done