Monday, August 3, 2009

sed'e değişken aktarmak, if'in çoklu kullanımı, tar'ın farklı kullanımı

Aşağıdaki script farklı dizinlerde oldtarih datası olup olmadığını kontrol eder, eğer varsa listesini bir dosyaya
yazar ve bu dosyadaki dosya isimlerinin tar 'ını alır. Dosya sayısı bir-kaç binden fazlaysa tar almak için tar -T opsiyonu kullanmak iyidir. Aksi durumda "argument list too long" hatası alınır.

for uydutip in EOS RESIM MPEF NOAA ; do
oldtarih=20090729
ls $uydutip|grep $oldtarih >/dev/null 2>&1
if [ $? -eq 0 ] ; then
ls $uydutip|grep $oldtarih|awk '{print $0}'|sed "s:^.:$uydutip\/&:g" >$fulpat/loglar/$uydutip.list
if [ "$uydutip" = "EOS" -o "$uydutip" = "MPEF" -o "$uydutip" = "NOAA" ] ; then
tar -czvf $uydutip.$oldtarih.tar.gz -T $fulpat/loglar/$uydutip.list
else
tar -cvf $uydutip.$oldtarih.tar -T $fulpat/loglar/$uydutip.list
fi
else
echo "$uydutip - $oldtarih tarihli data YOK ..--"
fi
done