gokayburuc.dev

Bash ile tr ve rg Kullanarak Dosya İsimlerini Düzenleme

Bu makalede, Bash betiği kullanarak dosya isimlerini düzenleyen bir fonksiyon oluşturacağız. Amacımız, bir dizindeki dosya isimlerini belli kurallar çerçevesinde değiştirmek: büyük harfleri küçük harfe çevirmek, Türkçe karakterleri İngilizce karşılıklarıyla değiştirmek ve boşlukları ya da alt çizgileri (_) kısa çizgilere (-) dönüştürmek. Aşağıdaki kod bu işlemi gerçekleştiren bir Bash betiğidir ve her adımı detaylıca inceleyeceğiz.


Betik Kodu

#!usr/bin/bash
for i in $(rg --files); do
  new=$(echo "$i" | tr "[:upper:]" "[:lower:]" |  tr " " "-" | tr "_" "-" | tr "ı" "i" | tr "ş" "s" | tr "ğ" "g" | tr "ü" "u" | tr "ö" "o" | tr "ç" "c" )
  echo "$new"

  mv "$i" "$new"
  echo "Rename: '$i' -> '$new' "

done

Satır Satır Açıklama

1. #!usr/bin/bash

Bu satır, betiğin Bash shell altında çalıştırılacağını belirtir. Doğru bir şekilde çalışması için #!/usr/bin/bash olarak düzeltilmesi gerekir. Bu satır "shebang" olarak bilinir ve betiğin hangi yorumlayıcı ile çalıştırılacağını belirler.


2. for i in $(rg --files); do

Bu satır, dizindeki tüm dosya isimlerini bir döngü ile işler.


3. new=$(...)

Bu satırda, dosya ismi düzenleme işlemleri yapılır ve yeni dosya ismi new değişkenine atanır. İçeride yapılan işlemler şunlardır:

Bu işlemlerin tamamı bir zincir halinde çalıştırılarak dosya ismi tamamen dönüştürülür.


4. echo "$new"

Bu satır, dönüştürülmüş yeni dosya ismini terminalde gösterir. Bu, işlem adımlarını kontrol etmek için faydalıdır.


5. mv "$i" "$new"

Bu komut, eski dosya ismini ($i) yeni dosya ismiyle ($new) değiştirir.


6. echo "Rename: '$i' -> '$new'"

Bu satır, eski ve yeni dosya isimlerini göstererek kullanıcıya yapılan değişikliği bildirir. Çıktı şu şekilde görünür:

Rename: 'eski-dosya-adi.txt' -> 'yeni-dosya-adi.txt'

7. done

Bu satır döngünün sonunu belirtir. Tüm dosyalar sırasıyla işlenir ve betik tamamlanır.


Örnek Çıktı

Bir dizinde aşağıdaki dosyalar olduğunu varsayalım:

Dosya Adı 1.txt
İçerik_dosyaŞ.txt
örnek-Görsel.png

Betiği çalıştırdıktan sonra dosyalar şu şekilde yeniden adlandırılır:

dosya-adi-1.txt
icerik-dosyas.txt
ornek-gorsel.png

Terminal çıktısı şu şekilde görünecektir:

dosya-adi-1.txt
Rename: 'Dosya Adı 1.txt' -> 'dosya-adi-1.txt'
icerik-dosyas.txt
Rename: 'İçerik_dosyaŞ.txt' -> 'icerik-dosyas.txt'
ornek-gorsel.png
Rename: 'örnek-Görsel.png' -> 'ornek-gorsel.png'

Avantajlar

  1. Otomasyon: Dosya isimlerini elle değiştirmek yerine hızlı ve güvenilir bir yöntem sunar.
  2. Türkçe Karakter Dönüşümü: Türkçe karakterleri otomatik olarak İngilizce karakterlere çevirir.
  3. Standardizasyon: Boşlukları, alt çizgileri ve büyük harfleri düzenleyerek tutarlı dosya isimleri oluşturur.

Geliştirme Fikirleri

Bu basit betikle, dizindeki dosya isimlerinizi standart bir formata kolayca dönüştürebilir ve zaman kazanabilirsiniz.