Temukan file yang berumur 30 menit

12

Bagaimana saya bisa menemukan file yang berumur 30 menit /bin/ksh?

Aravind
sumber
4
Apakah maksud Anda "apakah isinya berubah 30 menit yang lalu" atau "tidak ada hingga dibuat 30 menit yang lalu"? Juga, sistem operasi apa yang Anda gunakan? Sistem operasi yang berbeda datang dengan versi yang berbeda find.
Mark Plotnick
@ Mark Plotnick saya ingin mencari file yang berumur 30 menit
Aravind
Saya pikir maksudnya diciptakan 30 menit yang lalu . Seolah-olah misalnya seseorang berusia X, ia dilahirkan X waktu yang lalu.
erik

Jawaban:

15

Di Linux, tidak ada jejak waktu pembuatan file. Anda hanya dapat mengakses:

  • waktu modifikasi terakhir dari konten (kreasi dianggap sebagai modifikasi tentu saja) mtime,,
  • waktu akses terakhir, atime ,,
  • waktu modifikasi terakhir dari meta-data, ctime ,.

Jika Anda ingin mencari file dengan tes berdasarkan waktu ini, find ( man find) dapat membantu Anda.

Anda akan menggunakannya dengan cara ini untuk menemukan file yang diakses tepat 30 menit yang lalu di direktori Anda saat ini dan subdirektori-nya:

find -amin 30

Biasanya, Anda ingin menggunakan interval karena sulit untuk memberikan jumlah menit yang pasti:

find -amin +25 -amin -35

Ini akan menemukan file yang diakses lebih dari 25 tetapi kurang dari 35 menit yang lalu.

Dan jika Anda hanya tertarik pada waktu modifikasi dan bukan waktu akses (baca), ganti -amindengan -mmin.

lororget
sumber
Anda tidak ingin atime. atime adalah waktu akses.
ctrl-alt-delor
@richard OP tidak merinci apa yang dia maksudkan ... Pokoknya saya memasukkan mtimeterlalu dalam jawaban
lgeorget
1
@ lgeorget ketika saya menggunakannya -mtime 30menunjukkan file berumur 30 hari.
Aravind
@ user2910201 Ups membodohi saya. Xtimeopsi untuk hari dan Xminopsi untuk menit. Buruk saya, saya edit jawabannya
lgeorget
2
@ user2910201 tetapi perhatikan bahwa Anda dapat menggunakan Xtimedengan unit waktu yang wajar seperti 30mselama tiga puluh menit, atau 5dselama lima hari
lgeorget
3

Anda dapat menggunakannya mtimeuntuk melakukannya:

find . -mmin 30    #exactly 30 minutes old
ryekayo
sumber
ini akan memberi tahu Anda file-file yang dulu createdatau modified30 menit yang lalu
g4ur4v
@ g4ur4v ketika saya menggunakannya -mminmenunjukkan -mminbukan pilihan yang valid
Aravind
Coba ini:find /path -mtime +30m
ryekayo
Tidak yakin mengapa itu tidak mengenali -mmin, saya telah mencari banyak contoh menggunakan perintah itu ..
ryekayo
3

Tanpa GNU/BSD find

TZ=ZZZ0 touch -t "$(TZ=ZZZ0:30 date +%Y%m%d%H%M.%S)" /reference/file

lalu find . -newer /reference/file

solusi yang diberikan oleh Stéphane Chazelas

Aravind
sumber