A abordagem mais eficiente, mas possivelmente a menos legível, é simplesmente enumerar tudo em um grande e feliz comando mv
.
mv Z_*ana_bwk_na_N*.png \
Z_*ana_bwk_dwda*.png \
Z_*ana_bwkman_dwdna* \
Z_*ana_bwkman_dwdc* \
Z_*EDZW*_nwv01*_p00_na_N*WV11.png \
Z_*EDZW*_nwv01*_p00_nh_N*WV11.png \
Z_*nwv01*_hsy_NA*.png \
Z_*EDZW_*_htp_na_N_*_WV11SW.png \
Z_*_rft_na_*.png \
Z_*_r12* \
destination
Se você quiser dividir isso (talvez porque você tenha "a linha de comando muito longa"), você pode usar um documento aqui.
while read files; do
mv $files dest
done <<____
Z_*ana_bwk_na_N*.png
Z_*ana_bwk_dwda*.png
Z_*ana_bwkman_dwdna*
Z_*ana_bwkman_dwdc*
Z_*EDZW*_nwv01*_p00_na_N*WV11.png
Z_*EDZW*_nwv01*_p00_nh_N*WV11.png
Z_*nwv01*_hsy_NA*.png
Z_*EDZW_*_htp_na_N_*_WV11SW.png
Z_*_rft_na_*.png
Z_*_r12*
____
Se você deseja parametrizar o destino, também pode fazer isso.
while read destination files; do
mv $files "$destination"
done <<____
here Z_*ana_bwk_na_N*.png
here Z_*ana_bwk_dwda*.png
here Z_*ana_bwkman_dwdna*
there Z_*ana_bwkman_dwdc*
there Z_*EDZW*_nwv01*_p00_na_N*WV11.png
everywhere Z_*EDZW*_nwv01*_p00_nh_N*WV11.png
here Z_*nwv01*_hsy_NA*.png
elsewhere Z_*EDZW_*_htp_na_N_*_WV11SW.png
there Z_*_rft_na_*.png
anywhere Z_*_r12*
____
Um pouco confuso, os curingas no documento aqui serão expandidos pelo shell antes da execução do loop. Como precisamos que o loop interno não seja chamado, os nomes dos arquivos expandidos não podem conter metacaracteres do shell ( que não correspondem exatamente a si próprios - normalmente espaços em branco irregulares ou expressões curinga).