From: Kenan Dogan (kndogan@yahoo.com)
Date: Sat 12 Jun 2004 - 19:13:06 EEST
> 200civarında farklı isimlerde resim dosyam var. bu dosyaların isimlerini
> resim1.jpg, resim2.jpg şeklinde bir bash scriptle nasıl değiştirebilirim
Once varsayimlar :
1. Butun dosyalar ayni dizin icinde bulunsunlar
2. Bu dizin icindeki dosyalarin tumunde isim degisikligi amaclaniyor olsun
3. Bu dosyalarin tumu zaten "jpg/JPG/Jpg,... v.b." uzantili olsun
Riskler : (Bilerek ya da istem disi karsilasilabilecek)
1. Dosyalarin arasinda zaten sizin istediginiz isim kalibina
uyan (belki de gozunuzden kacmis) bazi dosyalar bulunabilir;
bunlarin degistirilmesi gereksiz olabilecegi gibi, sakincali da
olabilir.
2. Islem herhangi bir nedenle yarida kesilirse, ikinci
kez komutu calistirmak, ismi degismis dosyalarin
ezilmesine neden olabilir (1nci maddeyle de ilintili)
3. Islem bitmis olsa bile, kaza eseri 2nci kez komutu
calistirmak veya dizine ismi degisecek yeni dosyalarin
katilmasi nedeniyle islemi tekrar etmek sorun yaratabilir.
Simdi "kabuk betigi" (shell script) :
(!! expr ifadelerindeki tek tirnaklarin "komut tirnagi" olusuna dikkat
!! )
1. Riskleri goz onunde bulundurmayan basit betik :
#! /bin/bash
say=0
for dosya in *.[jJ][pP][gG]
do
say=`expr $say + 1`
mv $dosya resim$say.jpg
done
2. Riskleri olabildigince eleyen denetimli betik :
#! /bin/bash
say=0
for dosya in *.[jJ][pP][gG]
do
dosya1=`expr substr "$dosya" 1 5`
if [ "$dosya1" = "resim" ]
then
dosya2=`expr "$dosya" : ".....\([0-9]*\)"`
uzunluk=`expr length "$dosya"`
uzunluk1=`expr $uzunluk - 9`
uzunluk2=`expr length "$dosya2"`
if [ $uzunluk1 = $uzunluk2 ]
then
continue
fi
fi
say=`expr $say + 1`
while [ -f "resim$say.jpg" ]
do
say=`expr $say + 1`
done
mv $dosya resim$say.jpg
if [ $? = 0 ]
then
echo -e "$dosya \t ==> \t resim$say.jpg adini aldi."
fi
done
2nci betik ;
a)
resim7 dosyasina rastlarsa degistirmez.
resim7a dosyasina rastlarsa degistirir (en sonda rakam yok)
resimw8 dosyasina rastlarsa degistirir (arada "w" var)
resim8a1 dosyasina rastlarsa degistirir (arada "a" var)
b)
Onceki islem yarim kalmissa bastan calistirilabilir
c)
Sonradan araya baska (yeni) dosyalar katilmissa,
yeniden calistirilabilir
--!!--
Lutfen denemenizi dosyalarinizin asillari uzerinde degil,
kopyalari uzerinde yapiniz. Ben kendi kosullarimda denedim,
ama sizin ortaminizda herhangi bir nedenle farkli sonuclar
ortaya cikabilir.
Kolay gelsin.
__________________________________
Do you Yahoo!?
Friends. Fun. Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/