zsh, dosya seçmek için bash'ten biraz daha gelişmiş operatörlere sahip. Bunlar sayesinde bir defada, bir dizindeki dosyaların tamamına erişip, onlar üzerinde işlemler yapmak mümkün. Burada kısa bazı örnekler vereceğim.
Bir dizindeki tüm dosyalar :: ls *
Bulunduğumuz
: ls **
Bulunduğumuz
: ls */**(.mw-2)
Bulunduğumuz
: ls */**(.Lm+100)
Bulunduğumuz
: ls */**(.R)
/etc
: ls /etc/**(.W)
/etc
: =ls etc/**(.Wmw-1)
zsh'in sağladığı bu gibi seçeneklerin yanında, dosya adını parçalamak
da kolay . Misalen dosyanın eklentiden önceki kısmını almak için *(:r)
yazıyoruz. Dizindeki jpg dosyaları ImageMagick'in convert
programıyla aynı isimli png dosyalara çevirmek şöyle mümkün mesela:
for f in **/*.jpg(.) ; do
convert ${f:r}.jpg ${f:r}.png
done
Burada anlatılanları find
yoluyla yapmak da mümkün ancak çok daha uzun
sürebiliyor. Bilhassa dosya adlarını parçalamak, dönüştürmek gibi
işlemleri yaparken zsh'in nimetleri çok. Tek satırlık bir operasyonla
çok güçlü bazı dönüşümler yapabilmek mümkün.