Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

zsh’de dosya seçim operatörleri

Software Development #zsh #shell #linux #tutorial

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 dizin ve tüm alt dizinlerdeki dosyalar: ls **/*

Son iki haftada değiştirilmiş dosyalar: ls **/*(.mw-2)

Boyutu 100 MB’tan büyük olan dosyalar: ls **/*(.Lm+100)

Sadece okunabilir olan dosyalar: ls **/*(.R)

/etc dizininde dünya tarafından yazılabilir olan dosyalar: ls /etc/**/*(.W)

/etc dizininde son bir haftada değiştirilmiş ve dünya tarafından yazılabilir olan dosyalar: ls /etc/**/*(.Wmw-1)

zsh’in sağladığı bu gibi seçeneklerin yanında dosya adını parçalamak da kolay. Örneğin dosyanın uzantıdan önceki kısmını almak için *(:r) yazıyoruz. Dizindeki jpg dosyalarını ImageMagick’in convert programıyla aynı isimli png dosyalarına çevirmek şöyle mümkün:

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.