Isso deve funcionar, apenas certifique-se de estar executando o script com zsh.
Acabei de descobrir que os modificadores do ZSH funcionam somente em scripts interativos, portanto, o seguinte funcionará corretamente na linha de comando, mas não em um script (o script ignora o modificador e ecoa o caminho completo).
for file in ~/folder/*; do
echo ${file:t}
done
Como posso manipular parâmetros dessa maneira a partir de um arquivo de script executado?
Tags zsh shell-script