Cara menemukan file yang dibuat dalam satu jam terakhir di unix

135

Cara menemukan file yang dibuat dalam satu jam terakhir di unix

Ankur
sumber

Jawaban:

213

Jika dir untuk mencari srch_dirmaka baik

$ find srch_dir -cmin -60 # change time

atau

$ find srch_dir -mmin -60 # modification time

atau

$ find srch_dir -amin -60 # access time

menunjukkan file yang dibuat, dimodifikasi atau diakses dalam satu jam terakhir.

koreksi: ctime adalah untuk mengubah waktu simpul (tidak yakin, tolong perbaiki saya)

sama
sumber
2
Ini hebat dan semuanya, tetapi bendera ini tidak ada di Solaris findyang saya gunakan. OP mengatakan Unix dan saya pikir ini hanya Linux.
jiggy
12
Caranya adalah dengan menggunakan nilai waktu negatif ! Tidak begitu jelas di halaman manual.
sphakka
@ jiggy Ayush jawaban memberikan peretasan (berdasarkan -newer) yang seharusnya bekerja pada Solaris.
David Moles
3
-cmin BUKAN waktu pembuatan tetapi ubah waktu! baru saja menghapus penyebab .config dir saya pada uji coba, itu tidak berubah dalam X menit terakhir dan ketika saya melakukannya itu .... jadi mungkin edit ini ...!
Badmaster
Saya masih berpikir contoh komentar pertama perlu direvisi. "ubah waktu" adalah status file, bukan data file
KC Baltz
24

Sistem file UNIX (umumnya) tidak menyimpan waktu pembuatan. Sebagai gantinya, hanya ada waktu akses, waktu (data) modifikasi, dan waktu (inode) berubah.

Yang sedang berkata, findmemiliki -atime -mtime -ctimepredikat:

$ man 1 temukan
...
- waktu   n
        Primer harus mengevaluasi sebagai benar jika waktu perubahan terakhir
        informasi status file dikurangi dari waktu inisialisasi,
        dibagi dengan 86400 (dengan sisa yang dibuang), adalah n.
...

Dengan demikian find -ctime 0menemukan segala sesuatu yang inode telah berubah (misalnya termasuk pembuatan file, tetapi juga menghitung jumlah tautan dan izin serta perubahan ukuran file) kurang dari satu jam yang lalu.

singkat
sumber
86400 detik adalah sehari , bukan satu jam. Jadi argumen untuk -ctimedll adalah dalam satuan hari daripada jam.
Gaylon
12

lihat tautan ini dan kemudian bantu diri Anda sendiri.

kode dasarnya adalah

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg
ayush
sumber
Terima kasih, namun ini hanya akan mencari t.tmp. Bagaimana jika saya ingin menemukan semua file yang dibuat dalam satu jam terakhir.
Ankur
2
Ankur: itu akan membuat file sementara t.tmp dan mengatur waktu pembuatannya menjadi 2 jam yang lalu ... setelah itu akan mencari di direktori ini semua file yang dibuat setelah t.tmp yaitu dalam 2 jam terakhir ..
ayush
4
keren!! Padahal perintah pertama tidak perlu. touchmembuat file jika belum ada.
Amir Uval
5

find ./ -cTime -1 -type f

ATAU

find ./ -cmin -60 -type f

gwecho huang
sumber
3
sudo find / -Bmin 60

Dari manhalaman:

-Bmin n

Benar jika perbedaan antara waktu pembuatan inode file dan waktu finddimulai, dibulatkan ke menit penuh berikutnya, adalah n menit.

Jelas, Anda mungkin ingin mengatur sedikit berbeda, tetapi primer ini tampaknya solusi terbaik untuk mencari file yang dibuat dalam N menit terakhir .

jangan
sumber
find (GNU findutils) 4.6.0tidak memiliki -Bpredikat
blockloop
0

Lihat tautan ini untuk detail lebih lanjut.

Untuk menemukan file yang dibuat dalam satu jam terakhir di direktori saat ini, Anda dapat menggunakan -amin

Temukan . -amin -60 -jenis f

Ini akan menemukan file yang dibuat dalam 1 jam terakhir.

Jamre Ludhi
sumber