Kolem = nejsou povoleny žádné mezery v úkolu.
dir="${file%%.*}"
Naopak mezery jsou povinné v testu.
if [ -e $dir ]; then
^ ^
Co se týče stylistických vylepšení, neuškodí udělat zbytečnou mkdir -p , takže se můžete zbavit if prohlášení.
Uvozovky nejsou v úkolu povinné, takže je můžete odstranit z dir= čára. Citace je však dobrý nápad všude jinde, takže ostatní uvozovky nemažte.
Možná by bylo dobré přidat navíc .* do smyčky for. Pokud tedy skript spustíte více než jednou, nebude se snažit přesunout nově vytvořené podadresáře. A úhledným trikem (i když ne nutně zlepšením) je zkrátit BR*.* W0*.* na {BR,W0}*.* .
for file in {BR,W0}*.*; do
dir=${file%%.*}
mkdir -p "$dir"
mv "$file" "$dir"
done
Koncept 'Hold space' a 'Pattern space' v sed
Proč je jádro mapováno do stejného adresního prostoru jako procesy?