Hari ini, kami akan menunjukkan kepada Anda cara agar Anda bisa hapus file yang lebih lama dari 'X' hari. Misalkan Anda ingin menghapus file yang lebih lama dari 7 hari maka artikel ini akan membantu Anda melakukannya. Utilitas find memungkinkan Anda untuk meneruskan beberapa argumen menarik, termasuk satu untuk menjalankan perintah lain pada setiap file. Untuk mengetahui file apa yang lebih lama dari jumlah hari tertentu, kami akan menggunakan ini temukan utilitas dan kemudian gunakan perintah rm untuk menghapusnya. Sintaks perintahnya adalah sebagai berikut:
temukan /path/to/files* -mtime +5 -exec rm {} \;
Kami tidak bertanggung jawab atas kehilangan data yang mungkin terjadi. Kami merekomendasikan Anda ke daftar file dan periksa sebelum menghapusnya, dengan menjalankan perintah berikut:
temukan /path/to/files* -mtime +5 -exec ls {} \;
Catatan: Ada spasi antara rm, {}, dan \;
Penjelasan Perintah:
Argumen pertama dalam perintah di atas adalah jalur ke file. Argumen kedua adalah -Mtime digunakan untuk menentukan berapa hari file tersebut berumur. Jika Anda memasukkan +5, itu akan menemukan file yang lebih lama dari lima hari. Argumen terakhir adalah -Exec memungkinkan Anda untuk memberikan perintah seperti rm. NS {} \; pada akhirnya diperlukan untuk menghentikan perintah.
Ini harus bekerja di hampir semua versi Linux seperti Ubuntu, Fedora, Red Hat, Suse, dll. Jika Anda menghadapi masalah yang tampaknya sangat mustahil di sini, beri tahu kami di komentar di bawah.
Suraj Salunkhe
Saya menggunakan trik ini! Trik yang luar biasa! Terima kasih telah berbagi trik yang bagus :)
Amruta Patili
Ya saya menggunakan cammand ini selama sesi latihan RHCE.
Ben
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Menghancurkan sesuatu dari saran Anda di sini. Metode untuk membuat daftar file teks biasa dari file yang berumur lima hari. Lebih mudah untuk menyimpan catatan untuk dilihat sebelum menghapus file. Pengguna kemudian dapat menggunakan cat, vi, vim, gedit, emacs untuk melihat apa yang mungkin mereka buang.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Memecahnya ./ adalah direktori saat ini. Cari menggunakan direktori saat ini sering lebih aman daripada menggunakan / meriam. >> menambahkan ke file, jika tidak ada, itu akan dibuat.
Bahkan berpikir itu mungkin berguna sebagai alias. Mungkin bisa/harus mem-portingnya ke skrip Shell terlebih dahulu. Sedang malas, terlambat di sini.
Ben Piper
Terima kasih! Saya menggunakan sintaks ini dalam pekerjaan cron.
Vivian
Tip yang baik untuk menghapus file yang lebih tua dari hari-hari tertentu. Namun, jika daftar argumen Anda panjang (saya pikir maks adalah 65535 atau sesuatu seperti itu) ini tidak akan berfungsi.
Saya memiliki skrip khusus yang berfungsi:
#!/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
Done.
Rajesh Namase
Terima kasih telah memberikan naskahnya.
Vivian
Selamat datang Namase.
Panggil skrip seperti ini:
./scriptname.sh DEL numDays
Jika numDays tidak ditentukan, itu akan menggunakan minimal 1 jadi pastikan Anda menentukan numDays. Saya tidak bertanggung jawab atas cara Anda menggunakan skrip ini dan atas kehilangan data apa pun yang mungkin terjadi.
Pawan
jika saya ingin Hapus Dir dan file dari 30 hari ke mesin jarak jauh saya dan satu hal tidak termasuk direktori 1 dan 2 atau 3 dan bagaimana saya bisa melakukan ini ..?? Silakan bagikan pemikiran Anda.
Ali
Saya menggunakan teknik ini sangat berguna untuk menghapus file trc di oracle
Ethan
Terima kasih telah membagikan perintah yang berguna ini untuk semua pengguna. Kita dapat dengan mudah menghapus file lama di Linux. Saya juga mencarinya dan akhirnya mendapatkan solusinya di sini.
greg
Apakah ini mendapatkan file di sub-direktori juga? Jika demikian, bagaimana saya melakukannya agar tidak?
temukan /home/greg/logs -type f -mtime +5 -exec rm {} ;
Suraj Salunkhe
Saya sedang mencari perintah seperti itu. Sangat membantu. Dan terima kasih telah membagikan naskahnya, Vivian.
Suresh Musale
Sayang Team,
Saya perlu menghapus direktori yang berumur 14 hari dan harus menghapus Direktori jika hanya memiliki nomor
Sebagai contoh :
Nama direktori 20180424 harus dihapus
Nama direktori 20180424backup harus dihapus
Sebenarnya perintah Find dengan regex dan mtime tidak berfungsi.
temukan jalur regex mtime -14 | xargs rm -rf {}\;
tidak bekerja