[Çözüldü] Tarihine göre dosya bulma ve zipleme

Başlatan Taners, 04 Haziran 2010 - 18:32:55

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Taners

Merhaba. Basit bir bash scriptine ihtiyacım var. Scripting hakkında bilgim yok denecek kadar az o yüzden kendim beceremiyorum.
Bulunduğu klasördeki bütün *.txt dosyalarının en sonra değiştirilme zamanlarına bakacak. En sonra hangisi üzerinde değişiklik yapışmış ise o dosya üzerinde bir kaç komut uygulayacak.

Örnek:

Klasör içindeki txt dosyaları:
Jun  2 23:59 server_log_06_02_10.txt
Jun  3 23:59 server_log_06_03_10.txt
Jun  4 18:18 server_log_06_04_10.txt

En sonra üzerinde değişiklik yapışmış olan server_log_06_04_10.txt ve bunun üstünde gerekli komutları uygulamaya başlıyor;

cp server_log_06_04_10.txt server_log_06_04_10.txt.upl
/usr/local/bin/7z a server_log_06_04_10.txt.upl.zip server_log_06_04_10.txt.upl

ironic

Merhaba, basitçe birşeyler karaladım. Belirtilen dizindeki son 5 dk içerisinde değişikilğe uğramış/yeni oluşmuş dosyaları hedef dizine kopyalıyor. 7z kullanmadığım için söz dizimini bilmiyorum. 5 yerine istenen süre dakika cinsinden girilebilir. Yalnız bu yolla dosya adında boşluk varsa sorun çıkartabilir.

#!/bin/bash

for i in `find /nerede/bu/log_dosyaları/* -amin -5` ; do cp $i /hedef/dizin ; done

Taners

Tam olarak ihtiyacımı karşıladı. Teşekkür ederim.

ironic

Benzer gereksinimler için bir ekleme yapayım. Eğer dosya arşivlenmek istiyorsa aşağıdaki şekilde oluyor. .tar uzantılı yapıyor. Komut istenen arşivleme aracı için değiştirilebilir.

#!/bin/bash

for i in `find /nerede/bu/log_dosyaları/* -amin -5` ; do cp $i /hedef/dizin ; done

cd /hedef/dizin #bir önceki komuttaki

for i in `ls  | grep -v .tar` ; do   tar cf  $i.tar  $i ;done

cd -