Temukan file yang lebih baru dari 15 detik tetapi lebih dari 2 detik


17

Saya ingin mencari file yang lebih baru dari 15 detik tetapi lebih dari 2 detik. Ini adalah skrip yang saya gunakan saat ini yang mengambil file yang lebih baru dari 15 detik:

find /my/directory -name '*.jpg' -not -newermt '-15 seconds'

Setiap bantuan sangat dihargai


2
Sistem operasi apa yang Anda gunakan? Ada perbedaan dalam findimplementasinya.
— terdon

Haruskah file diubah tepat 2 detik yang lalu cocok? Bagaimana dengan file yang dimodifikasi tepat 15 detik yang lalu?
— Mikel

Lebih baru dari 2 detik pada saat script mulai atau pada saat itu berakhir?
— Stéphane Chazelas

@Mikel, itu mungkin tidak relevan karena jam memiliki resolusi nanosecond saat ini.
— Stéphane Chazelas

1
Ok ... karena tidak ada orang lain yang bertanya ... @ Yllier123 mengapa Anda perlu mencari file yang dibuat antara 2 <x <15 detik? Saya hanya penasaran.
— C Bauer

Jawaban:


17

Anda dapat menggabungkan beberapa predikat dengan merantainya.

Tidak ada -oldermt, tetapi Anda dapat menuliskannya sebagai -not -newermt.

Kamu ingin:

  • -newermt '-15 seconds' mengatakan file berumur kurang dari 15 detik, dan
  • -not -newermt '-2 seconds' mengatakan file lebih dari 2 detik

Mencoba:

find /my/directory -newermt '-15 seconds' -not -newermt '-2 seconds'

Atau, agar memenuhi POSIX:

find /my/directory -newermt '-15 seconds' \! -newermt '-2 seconds'

Juga, supaya Anda (dan pembaca lain) sadar, "baru" berarti dimodifikasi lebih baru daripada, tidak dibuat lebih baru daripada.


3
Bagus. Catatan yang -not -newermt '-2 seconds'juga akan cocok dengan file berumur tepat 2 detik. Gunakan -not -newermt '3 seconds'untuk mengecualikan mereka juga.
— terdon

1
Ya, kasus tepi selalu menyenangkan. Saya sebenarnya tidak yakin resolusi apa yang digunakan untuk perbandingan ini. Asumsi saya adalah bahwa segala sesuatu yang dimodifikasi ~ 2.000000001 detik yang lalu adalah cocok, tetapi itu juga akan tergantung pada sistem file dan sistem operasi Anda.
— Mikel

Poin bagus, saya tidak tahu apa resolusi itu. Saya baru saja diuji dengan touch -d "2 seconds ago" file; find . -newermt '-15 seconds' -not -newermt '-2 seconds'dan mendapatkannya file.
— terdon

@terdon Yah, itu tergantung pada apakah cap waktu memiliki resolusi yang lebih tepat daripada satu detik; itu akan tergantung pada sistem, sistem file, dan bahkan mungkin bervariasi antara file pada sistem file yang sama jika itu digunakan oleh beberapa mesin yang berbeda.
— Blacklight Shining

"lebih baru" berarti "lebih baru dari". Ini adalah "m" yang berarti "dimodifikasi".
— OrangeDog

4

Anda tidak menyebutkan OS Anda ....

Ini berfungsi baik dengan implementasi find modern seperti yang dari FreeBSD atau dengan sfind.

find /my/directory -name '*.jpg' -mtime -15s -mtime +2s

Sfind adalah bagian dari alat Schily: http://sourceforge.net/projects/schilytools/files/

PERINGATAN: Saya baru saja menemukan masalah di sfind. Jika -mtimeargumen kurang dari 60-an, itu tidak akan berfungsi dengan benar karena waktu file saat ini dibandingkan dengan cap waktu 60 detik di masa depan yang awalnya dihitung untuk pergantian tahun -ls.

BTW: -notbukan milik find, itu adalah GNUisme non-portabel.


1
Ada bashtag ... Jadi lingkungannya bisa Cygwin, Debian GNU / Hurd, bashberjalan di FreeBSD atau Solaris, ... ;-)
— phk

Untuk GNU find, tampaknya desimal, meskipun gila, dapat digunakan sebagai solusi.
— Arthur2e5

Menemukan POSIX memang memiliki !untuk -tidak sebagai! expression . Jadi, bukan masalah besar.

@ php Ini sebabnya saya menyebutkan metode yang bekerja dengan standar yang ditingkatkan primarydarifind untuk memberi tahu orang-orang bahwa tidak perlu selalu menambahkan yang baru primariesuntuk menemukan untuk dapat meningkatkan fungsionalitas. BTW: Suatu perbaikan libfindtelah diterbitkan di Internet schily tools.
— schily

@ BinaryZebra masalahnya adalah yang gfindmenambahkan -notalias sama sekali. Itu tidak pernah dibutuhkan dan kehadirannya dapat dilihat sebagai kunci strategi vendor.
— schily
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.