Temukan file yang telah diubah dalam 24 jam terakhir

265

Misalnya, server MySQL sedang berjalan di mesin Ubuntu saya. Beberapa data telah diubah selama 24 jam terakhir.

Apa skrip (Linux) yang dapat menemukan file yang telah diubah selama 24 jam terakhir?

Harap sebutkan nama file, ukuran file, dan waktu modifikasi.

JackWM
sumber
1
Anda dapat menggunakan stackoverflow.com/questions/4561895/…
vaugham

Jawaban:

479

Untuk menemukan semua file yang dimodifikasi dalam 24 jam terakhir (hari penuh terakhir) di direktori spesifik tertentu dan sub-direktori:

find /directory_path -mtime -1 -ls

Seharusnya sesuai dengan keinginan Anda

Yang -sebelumnya 1itu penting - itu berarti apa pun berubah satu hari atau kurang dari yang lalu. Sebuah +sebelum 1akan bukan berarti ada yang berubah setidaknya satu hari yang lalu, sementara memiliki apa-apa sebelum 1akan berarti itu berubah dituntut satu hari yang lalu, tidak lebih, tidak kurang.

Xavjer
sumber
17
bagus! bagaimana kalau 2 jam terakhir?
JackWM
114
gunakan "-mmin -120" sebagai ganti mtime
Xavjer
1
mengapa -sebelum nilai numerik?
EsseTi
6
Argumen untuk -mtime diartikan sebagai jumlah hari penuh dalam usia file. -mtime + n berarti lebih besar dari, -mtime -n berarti benar-benar kurang dari.
Xavjer
3
Untuk pembaca: jangan lupa untuk menghapus -lssaat menggunakan dalam skrip
redolent
41

Anda bisa melakukannya dengan

find . -mtime 0

Dari man find:

[Waktu] sejak setiap file terakhir dimodifikasi dibagi dengan 24 jam dan sisanya dibuang. Itu berarti bahwa untuk mencocokkan -mtime 0, file harus memiliki modifikasi di masa lalu yang kurang dari 24 jam yang lalu.

Michael
sumber
25

Cara lain yang lebih manusiawi:

find /<directory> -newermt "-24 hours" -ls

atau:

find /<directory> -newermt "1 day ago" -ls

atau:

find /<directory> -newermt "yesterday" -ls
Maxim Egorushkin
sumber
11

Pada sistem yang kompatibel dengan GNU (yaitu Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more

Ini akan mencantumkan file dan direktori yang telah dimodifikasi dalam 24 jam terakhir ( -mtime 0). Ini akan mencantumkan mereka dengan waktu modifikasi terakhir dalam format yang dapat diurutkan dan dibaca manusia ( %T+), diikuti oleh ukuran file ( %s), diikuti oleh nama file lengkap ( %p), masing-masing dipisahkan oleh tab ( \t).

2>/dev/nullmembuang output stderr, sehingga pesan kesalahan tidak mengeruhkan air; sort -rmengurutkan hasil dengan paling baru dimodifikasi terlebih dahulu; dan | moremencantumkan satu halaman hasil sekaligus.

Stephen G Tuggy
sumber
2
Anda juga bisa menggunakan | lessbukan | more, saya kira.
Stephen G Tuggy
7

Untuk orang lain yang mendarat di sini di masa mendatang (termasuk saya), tambahkan opsi -nama untuk menemukan jenis file tertentu, misalnya: find /var -name "*.php" -mtime -1 -ls

resedasue
sumber
5

Perintah ini bekerja untuk saya

find . -mtime -1 -print
Bhandari
sumber