Technology

Cara Mencari Tahu Rentang Waktu Akses File di Linux dengan Perintah Find

 

   

Hampir semua sistem operasi melakukan pencatatan kapan terakhir kali file dibaca dan kapan terakhir kali file diubah isinya. Pada system operasi Windows, terdapat fitur recently document yang sudah ada di menu start sehingga lebih mudah mencarinya. Nah, di Linux, kita juga bisa mengetahui apakah ada file yang dimodifikasi pada rentang waktu tertentu.  Contohnya dengan perintah berikut, kita bisa mengetahui semua file di home direktori kita yang dimodifikasi sejak 30 menit lalu sampai saat ini:

find ~ -type f -mmin -30

Perhatikan penggunaan tanda minus (-) yang berarti “maksimum hingga N menit”. Apabila kita ganti ke tanda plus (+) berarti  kita mencari file yang diubah isinya lebih dari 30 menit yang lalu.

find ~ -type f -mmin +30

Bagaimana jika kita ingin mencari file yang kita modifikasi di antara suatu jam tertentu? Alternatif pertama adalah kita menghitung berapa menit telah berlalu. Misalnya, saat ini jam 16:00 (jam 4 sore). Sementara kita mencari file yang dibuat antara jam 10 pagi dan 12 siang. Berarti kita mencari file antara 6 jam (360 menit) dan 4 jam (240) menit lalu. Secara matematis, berarti dikatakan 240<=t<=360. Adapun perintahnya adalah:

find ~ -type f -mmin +240 -mmin -360

Perhatikan urutan peletakan opsi -mmin pada contoh di atas. Urutan opsi yang tidak seperti itu, seperti contohnya:

find ~ -type f -mmin +360 -mmin -240

berarti: “mencari file yang diubah di bawah 4 jam dan lebih dari 6 jam yang lalu”, atau t<=240 dan t>=360. Tentunya tidak akan ditemukan file apapun.

Kesulitannya adalah misalkan kita ingin mencari jam yang sangat spesifik. Contoh antara jam 8:45 dan 9:45 pagi ini. Ketimbang kita hitung berapa menit ke belakang, kita manfaatkan opsi -newerXY dari find. Opsi ini akan mencari file-file yang terakhir dimodifikasi lebih baru dari file yang disebutkan sebagai argumen -newer. Berikut ini contoh lengkapnya.

$ touch -d "08:45" ./start
$ stat ./start
   File: `./start'
   Size: 0               Blocks: 0          IO Block: 4096   regular empty file
 Device: 808h/2056d      Inode: 393539      Links: 1
 Access: (0664/-rw-rw-r--)  Uid: (1000/ root)   Gid: (1000/ root)
 Access: 2013-07-07 08:45:00.000000000 +0700
 Modify: 2013-07-07 08:45:00.000000000 +0700
 Change: 2013-07-07 21:53:16.610412038 +0700
 Birth: -
$ touch -d "9:45" ./end
$ stat ./end
   File: `./end'
   Size: 0               Blocks: 0          IO Block: 4096   regular empty file
 Device: 808h/2056d      Inode: 397175      Links: 1
 Access: (0664/-rw-rw-r--)  Uid: (1000/ root)   Gid: (1000/ root)
 Access: 2013-07-07 21:54:04.246648298 +0700
 Modify: 2013-07-07 09:45:00.000000000 +0700
 Change: 2013-07-07 21:53:59.122628423 +0700
 Birth: -

Kita sudah membuat dua file bernama “start” dan “end”  (nama file bisa Anda ganti dengan nama lain), masing-masing dengan jam modifikasi yang kita butuhkan. Lalu kita umpankan dua file di atas pada perintah find:

$ find ~ -type f -newer ./start -not -newer ./end

Berikut ini penjelasan rinci perintah di atas:

  • Opsi -newer akan mengecek waktu modifikasi file “start”, dalam hal ini adalah jam 8:45 hari ini. Kemudian akan dicari semua file yang terakhir dimodifikasi setelahnya
  • Opsi -not akan membalik makna parameter setelahnya, jadi -not -newer bermakna file dengan waktu modifikasi sebelumnya.
  • Opsi -newer yang kedua akan mengecek file “end”, yang dibuat jam 9:45. Karena opsi -not, berarti akan dicari semua file sebelum 9:45.
  • Semua kondisi akan digabung, jadi akan dicari file antara jam 8:45 dan 9:45

Linux CentOS 6 dan Linux Mint 9 telah menyertakan find versi baru yang memungkinkan kita menyebutkan waktu secara langsung via opsi “-newerXY”:

find ~ -newermt "8:45"

Ada tambahan huruf “mt” di belakang -newer, masing-masing artinya waktu modifikasi terakhir dan penyebutan jam secara langsung. Trik ini bisa kita perluas, misalnya kita ingin melihat file apa saja yang kita edit pada tanggal 9 September 2013 selama satu hari penuh:

$ find ~ -type f -newermt "9 Sep 2013 00:00" -not -newermt "10 Sep 2013 00:00"

Kita memakai jam 12 malam pada tanggal berikutnya agar file yang dibuat pada jam 23:59 tetap masuk dalam hitungan. Kalau Anda ingin mengurutkan secara kronologis, Anda bisa mengombinasikannya dengan xargs dan ls seperti berikut:

$ find ~ -type f -newermt "9 Sep 2013 00:00" -not -newermt "10 Sep 2013 00:00" | xargs -r ls -lt | less

Opsi -lt pada ls akan mengurutkan file mulai dari yang paling akhir diakses sampai yang terlama. Apabila Anda ingin membalik urutan ini, gunakan perintah “ls -ltr”.

Selamat bereksperimen :-)

Dapatkan Segera! Video Marketplace Domination: Cara Sukses Jualan di Tokopedia dan Bukalapak. Download Now!


Artikel Terkait

Berikan Komentar

Your email address will not be published. Required fields are marked *