Menggunakan find -mmin untuk menemukan file dengan waktu modifikasi di masa mendatang

9

Saya bisa menggunakan

find . -mmin -5

untuk menemukan file yang diubah dalam 5 menit terakhir. Namun, jika saya mencoba mencari file dengan waktu modifikasi di masa mendatang dengan memberikan angka negatif findmenolak untuk melakukannya:

find . -mmin --1

Apakah ada cara untuk memberikan waktu modifikasi di masa depan ke Linux standar find?

Muxecoid
sumber

Jawaban:

9

Untuk menemukan file yang dimodifikasi setidaknya 5 hari di masa mendatang, gunakan:

find . -newermt "5 days"

Sintaks untuk spesifikasi waktu sesuai dengan yang untuk date -d. Lihat man findinfo pada sakelar yang dinamai -newerXYuntuk informasi lebih lanjut.

Tidak mungkin menggunakan mis -mminuntuk melakukan ini. Itu dilaporkan sebagai bug terhadap GNU find , dan diselesaikan dengan menerapkan -newerXYdi findutils 4.3.3 (~ 2007) seperti yang saya tunjukkan di atas.


Rupanya bukan GNU menemukan yang digunakan, tetapi BusyBox.

Anda kemudian dapat membuat file sementara dengan touch -ddan tanggal di masa depan dan kemudian menggunakan -newersaklar untuk findseperti:

touch -d "+5 days" tmpfile
find . -newer tmpfile

BusyBox touchtidak mendukung format tanggal itu, tetapi prinsipnya sama dan findmendukungnya -newer. Membuat file referensi dengan tanggal yang benar dibiarkan sebagai latihan untuk pembaca (selalu nyaman untuk menulis).

Daniel Andersson
sumber
Terima kasih. Masalah saya adalah bahwa temuan saya adalah BusyBox tertanam yang lama ditemukan dan bukan binutil. Rupanya cara linux standar tidak berfungsi di sini. :(
Muxecoid
@Muxecoid: Saya memperbarui jawaban saya dengan beberapa komentar BusyBox.
Daniel Andersson
Ini hanya menyelamatkan saya dari masalah pada mesin baru di mana saya telah melakukan sesuatu sepuluh jam di masa depan secara tidak sengaja (offset zona waktu diterapkan pada jam perangkat keras yang sudah diimbangi) dan setelah memperbaiki jam, configureskrip mengeluh tentang hal-hal yang terjadi di masa depan (oleh satu setengah jam atau lebih): find . -newermt '1 hour' | xargs touch -d '-9 hours'dan saya bisa melanjutkan. :-)
Chris Morgan