Saya ingin menghapus file log yang lebih lama dari 5 hari dari direktori. Tetapi penghapusan tidak harus didasarkan pada timestamp file. Itu harus didasarkan pada nama file. Untuk Contoh todays date adalah 07/05/2012 dan direktori berisi 10 file dari nama-nama seperti ABC_20120430.log
, ABC_20120429.log
, ABC_20120502.log
, ABC_20120320.log
dll saya ingin dapat menghapus file dengan mengekstraksi tanggal dari nama file.
10
Saya pikir @ oHessling hampir memilikinya: Jangan parsing ls , dan Anda dapat melakukan lebih banyak di bash:
sumber
four_days=$(echo "puts [clock format [clock scan {4 days ago}] -format %Y%m%d]" | tclsh)
Salah satu cara menggunakan
perl
:Isi dari
script.pl
:Untuk mengujinya saya membuat beberapa file:
Periksa dengan
ls -1
:Jalankan skrip seperti:
Dengan output sebagai berikut:
sumber
Yang bisa Anda lakukan adalah menggunakan fakta bahwa nama file Anda akan diurutkan dalam urutan kronologis. Misalnya, untuk menyimpan 5 file terakhir:
sumber
rm
kecuali Anda tahu Anda membunuh anak kucing setiap kali Anda melakukannya. Itu hanya ide yang buruk, jika Anda tidak tahu mengapa melakukan riset dan belajar bahwa selalu ada cara yang lebih baik untuk mendekati masalah apa pun yang bisa menjadi solusi.