Bugün size yapabileceğiniz bir yol göstereceğiz. 'X' günden daha eski dosyaları silin. 7 günden eski dosyaları silmek istediğinizi varsayalım, o zaman bu makale bunu yapmanıza yardımcı olacaktır. Find yardımcı programı, her dosyada başka bir komut yürütmek de dahil olmak üzere birkaç ilginç argüman iletmenize izin verir. Hangi dosyaların belirli bir günden daha eski olduğunu bulmak için bunu kullanacağız. yardımcı program bul ve sonra rm komutu onları silmek için. Komut sözdizimi aşağıdaki gibidir:
/path/to/files* bul -mtime +5 -exec rm {} \;
Oluşabilecek herhangi bir veri kaybından sorumlu değiliz. sizi tavsiye ettik dosyaları listele ve kontrol et bunları silmeden önce aşağıdaki komutu çalıştırarak:
/path/to/files* bul -mtime +5 -exec ls {} \;
Not: rm, {} ve \ arasında boşluklar var;

Komut Açıklaması:
Yukarıdaki komuttaki ilk argüman, dosyalara giden yol. İkinci argüman ise -Mtime dosyanın kaç günlük olduğunu belirtmek için kullanılır. +5 girerseniz, beş günden eski dosyaları bulur. son argüman -Exec rm gibi bir komutu iletmenizi sağlar. NS {} \; sonunda komutu sonlandırmak için gereklidir.
Bu, Ubuntu, Fedora, Red Hat, Suse vb. gibi hemen hemen tüm Linux sürümlerinde çalışmalıdır. Burada oldukça imkansız görünen herhangi bir sorunla karşılaşırsanız, aşağıdaki yorumlarda bize bildirin.
Bu hileyi kullandım! Müthiş numara! Böyle güzel bir hile paylaştığınız için teşekkürler :)
Ya bu cammand'ı RHCE'nin uygulama oturumu sırasında kullandım.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Buradaki önerinizden bir şeyler hazırladım. Beş günlük dosyaların bir düz metin dosyası listesini yapmak için bir yöntem. Dosyaları kaldırmadan önce görüntülemek için kayıt tutmak daha kolaydır. Kullanıcılar daha sonra ne atabileceklerini görmek için cat, vi, vim, gedit, emacs kullanabilir.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Onu parçalamak ./ geçerli dizindir. Geçerli bir dizini kullanarak bulmak, / cannon'u kullanmaktan genellikle daha güvenlidir. >> bir dosyaya ekler, yoksa oluşturulur.
Takma ad olarak yararlı olabileceğini bile düşündüm. Muhtemelen önce onu bir kabuk betiğine taşıyabilir / taşımalıdır. Yine de tembel olmak, burada geç.
Teşekkürler! Bu sözdizimini bir cron işinde kullandım.
Belirli günlerden daha eski dosyaları silmek için iyi bir ipucu. Ancak, argüman listeniz uzunsa (en fazla 65535 veya bu satırlar boyunca bir şey olduğunu düşünüyorum) bu işe yaramaz.
İşi yapan özel bir komut dosyam var:
#!/bin/bash
cd /directory-to-be-checked
allfiles=`ls`
NOW=`date +%s`
for filename in $allfiles
do
OLD=`stat -c %Z $filename`
if [ "$2" == "" ]
then
DELAY=86400
else
let "DELAY=$2 * 86400"
fi
AGE=`expr $NOW - $OLD`
#echo "Delay is $DELAY and Age is $AGE"
#exit 0
if [ $AGE -gt $DELAY ]
then
#echo "File $filename is $AGE"
fstamp=`ls -l $filename`
if [ "$1" == "DEL" ]
then
echo "Deleting file $filename"
`rm -f $filename`
else
echo "$fstamp"
fi
fi
Bağış yapın.
Senaryoyu verdiğin için teşekkürler.
Hoşgeldin Namase.
Komut dosyasını şöyle çağırın:
./scriptname.sh DEL numDays
numDays belirtilmezse minimum 1 kullanılır, bu nedenle numDays belirttiğinizden emin olun. Bu betiği nasıl kullandığınızdan ve meydana gelebilecek herhangi bir veri kaybından sorumlu değilim.
Uzaktaki makineme 30 günlük Dizileri ve dosyaları silmek ve 1 ve 2 veya 3 dizin hariç bir şey istiyorsam bunu nasıl yapabilirim ..?? Lütfen düşüncelerinizi paylaşın.
Bu tekniği kullanıyorum, oracle'da trc dosyasını silmek için çok kullanışlı
Tüm kullanıcılar için bu yararlı komutu paylaştığınız için teşekkür ederiz. Linux'ta eski dosyaları kolayca silebiliriz. Ben de onu arıyorum ve sonunda çözümü burada buldum.
Bu, alt dizinlerdeki dosyaları da alıyor mu? Eğer öyleyse, bunu yapmaması için nasıl yapabilirim?
find /home/greg/logs -type f -mtime +5 -exec rm {} ;
Böyle bir komut arıyordum. Gerçekten yardımcı. Ve senaryoyu paylaştığın için teşekkürler, Vivian.