Bagaimana cara menghapus file yang dimodifikasi antara tanggal tertentu?

12

Seperti dalam topik: Saya ingin menghapus file dalam direktori yang telah dimodifikasi dalam rentang tanggal tertentu. Bagaimana saya bisa melakukan ini?

Patryk
sumber

Jawaban:

18

Perintah GNU findadalah cara untuk pergi. Misalnya, untuk menghapus semua file dalam direktori saat ini antara 1 dan 5 Agustus, Anda dapat menggunakan perintah berikut

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

Lebih baik untuk mengeksekusi perintah tanpa -deletetindakan, pertama, untuk melihat daftar file yang tertarik (pengganti yang baik bisa -lsyang menghasilkan daftar ls-like).

Menghapus -maxdepth 1spesifikasi akan melintasi semua subdirektori juga.

Anda juga dapat menentukan jam, misalnya

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Diperingatkan untuk tidak menghapus tanda kutip tunggal, yang melindungi spasi antara tanggal dan waktu.

Karakter !adalah negasi, harus dibaca: lebih baru dari tanggal ini tetapi tidak lebih baru dari tanggal lainnya.

enzotib
sumber
Terima kasih atas balasannya Bisakah saya juga menggunakan sesuatu untuk memilih rentang jam? Dan apa '!' Digunakan untuk ?
Patryk
Itu !bukan. Dalam contoh ini: Tidak lebih baru dari 2011-08-06.
con-f-use
@lordmonkey: lihat pengeditan saya di jawabannya
enzotib
3
+1. Saya tidak tahu predikat -hapus. Mungkin itu tidak diperlukan, tetapi saya akan menambahkan -type f.
Michał Šrajer
@ Michał Šrajer: tips bagus untuk -type f, saya lupa itu. Itu -deleteadalah ekstensi GNU, saya pikir.
enzotib