Tuesday, April 12, 2016

PKTI 2B -- Pencarian Berkas Dengan Find

BAB 21
PENCARIAN BERKAS DENGAN FIND

21.1 PENGANTAR FIND
                Direktori pada unix sangat berguna untuk mengorganisasikan berkas yang jumlahnya sangat banyak. Berkas-berkas tertentu dikelompokkan dalam sebuah subdirektori. Namun, jika direktori sangat banyak bisa menimbulkan, yaitu kesulitan dalam melakukan tindakan tertentu pada berkas-berkas yang terletak dalam direktori yang berbeda-beda.
`               Untuk mengatasi hal ini unix menyediakan utilitas bernama find. Perintah ini tidak saja berguna untuk mencari berkas-berkas tertentu pada suatu direktori beserta subdirektori, melainkan juga dapat digunakan untuk melakukan tindakan terhadap berkas-berkas tertentu yang berada dalam direktori beserta subdirektorinya.
                Perlu diketahui, karena ada kemungkinan anda menginspeksi direktori-direktori yang dapat dilihat oleh pemakai biasa, mungkin anda perlu menjadi superuser terlebih dahulu.
21.2 MENCARI BERKAS-BERKAS TERTENTU
                Misalnya anda lupa letak direktori dari berkas bernama VT100, anda bisa memberi perintah sbb:
                Find/-name vt100 –print
Perintah di atas menyatakan find agar melacak berkas bernama vt100 (dinyatakan setelah –name) dimulai dari direktori root (/) dan kalau ketemu ditampilkan ke standard output (dinyatakan dengan: print). Hasilnya semacam berikut:
                /usr/share/abset/vt100
                /usr/share/terminfo/v/vt100
                /usr/share/aumix/vt100
Atau mungkin diselingi beberapa pesan kesalahan yang menunjukkan bahwa anda tidak diperkenankan mengakses direktori kalau anda berlaku sebagai pemakai biasa (bukan superuser).
                Seandainya anda tahu bahwa berkas vt100 berada di subdirektori yang terletak di bawah direktori /usr, tetapi tidak tahu letaknya dengan pasti, anda bisa memberikan perintah sbb:
                Find /usr –name vt100 –print
Dengan demikian pencarian lebih dipersempit yakni dimulai dari direktori /usr.
                Nama yang hendak dicari juga dapat mengandung wildcard seperti * dan ?. pada kadaan seperti ini nama yang dicari harus diletakkan dalam tanda petik .
                Contoh:
                Find /usr –name “*.c” –print
Akan menampilkan nama-nama berkas berakhiran dengan .c dimulai dari direktori /usr.
21.3 FORMAT UMUM
                Format umum perintah find adalah sbb:
Perintah               : find
Kategori               : utilitas unix
Fungsi                   : mencari berkas
Format                 : find daftar_path kriteria_pencarian tindakan
                                  Argumen:
-          Daftar_path
Berisi satu atau beberapa direktori yang menjadi awal pencarian. Misalnya:

. berarti dimulai dari direktori kerja
/ berarti dimulai dari root
-          Kriteria_pencarian
Menginstruksikan find untuk mencari berkas-berkas yang memenuhi kriteria ini. misalnya: -name vt100
-          Tindakan
Menyatakan tindakan yang diambil oleh find kalau berkas yang dicari ditemukan. Misalnya: -print
Hasil                       : Hasil dikirimkan ke standard output
 
                Find daftar_path kriteria_pencarian tindakan














Gambar 21.1 Perintah find






                Berbagai variasi kriteria_pemilihan dan tindakan akan dibahas pada bab ini
21.4 MENCIPTAKAN BERKAS BERDASARKAN UKURAN BERKAS
                Dengan menggunakan find, anda bisa mencari berkas-berkas berdasarkan ukurannya. Kriteria yang digunakandapat dilihat pada tabel berikut.
Tabel 21.1 Kriteria pencarian berkas berdasarkan ukuran.
Kriteria
Keterangan
-size -n
Berkas yang berukuran kurang dari n blok
-size n
Berkas yang ukurannya sama dengan n blok
-size +n
Berkas yang ukurannya lebih dari n blok
Satuan blok identik dengan 512 byte.
Sebagai contoh:
                Find . –size +2 –print
Menyebabkan find mencari berkas-berkas yang berukuran lebih dari 2 blok (>1kb) (-size +2), dimulai dari direktori kerja dan hasilnya ditampilkan ke standard output.
                Perintah ini biasa digunakan untuk mencari berkas-berkas berukuran besar oleh superuser, untuk mengetahui berkas-berkas yang hendak dihapus atau diperkecil ukurannya.
Catatan:
Ukuran berkas dalam satuan blok dapat diperoleh melalui perintah ls –l. Jumlah blok akan ditampilkan di sebelah kiri, seperti berikut:
Total      50
     2         abc
     20      ls . tmp
     28      man . tmp
 
 









                Dengan menambahkan huruf c setelah angka pada –size, maka satuan yang dijadikan acuan tidak lagi berupa blok melainkan karakter.
Contoh 1:
                Find . –size 10c print
Menampilkan berkas-berkas yang ukurannya 10 karakter.
Contoh 2:
                Find . –size +10c print
Menampilkan yang ukurannya lebih dari 10 karakter.
Contoh 3:
                Find . –size -10c print
Menampilkan yang ukurannya kurang dari 10 karakter.
21.5 MENCARI BERKAS BERDASARKAN TIPE BERKAS
Kriteria yang digunakan untuk mencari berkas adalah:
                -type n
Dengan n berupa kode tipe berkas seperti pada tabel 21.2
Kode tipe berkas
Keterangan
b
Berkas spesial berbasis blok
c
Berkas spesial berisi karakter
d
Direktori
p
Pipa (FIFO)
f
Berkas biasa
l
Symbolic link
               
Contoh 1:
                Find $HOME –type d –print
Akan menampilkan direktori-direktori yang terletak di bawah home directory
Contoh 2:
                Find . –type f –print
Menampilkan nama-nama berkas biasa (bukan direktori) pada direktori kerja beserta anak-anaknya.
21.6 MENCARI SEMUA BERKAS YANG DIMILIKI SESEORANG PEMAKAI
                Dengan menggunakan find, anda dapat mencari semua berkas yang dimiliki oleh seseorang pemakai. Namun, perintah ini memerlukan superuser sebagai pelakunya, karena pencarian dimulai dari root-. Dalam hal ini kriteria yang dipergunakan berupa:
                -user nama_pemakai
Contoh:
                Find / -user kadir –print
Akan menampilkan semua berkas dimulai dari root yang pemiliknya adalah kadir.

21.7 MENCARI BERKAS-BERKAS YANG TIDAK DIAKSES DALAM WAKTU TERTENTU
Mencari berkas-berkas yang tidak diakses dalam waktu tertentu juga dapat dilakukan melalui find. Kriteria yang digunakan dapat dilihat pada tabel 21.3
Tabel 21.3 Kriteria berdasarkan waktu terakhir diakses
Kriteria
Keterangan
-atime n
Berkas-berkas yang diakses paling akhir adalah n hari yang lalu
-atime +n
Berkas-berkas yang diakses terakhir lebih dari n hari yang lalu
-atime –n
Berkas-berkas yang diakses terakhir kurang dari n hari yang lalu

Contoh:
                Find . –atime 5 –print
Catatan:
Jika anda memanggil suatu berkas dengan vi dan walaupun anda tidak melakukan perubahan apapun, anda sudah dikatakan mengakses berkas. Tanggal yang tercantum pada ls –l adalah tanggal terakhir berkas dimodifikasi.
 
Menampilkan nama-nama berkas pada direktori kerja beserta anak-anaknya yang diakses terakhir kali lima hari yang lalu.




21.8 MENCARI BERKAS YANG DIMODIFIKASI DALAM WAKTU TERTENTU
                Selain menggunakan waktu akses, waktu pemodifikasian data juga dapat dijadikan sebagai kriteria pada find. Kriterianya berupa:
                -mtime n
Seperti halnya –atime di depan angka setelah mtime bisa disertakan tanda atau +.
Contoh :
                Find . –mtime -10 –print
Artinya berkas-berkas yang dimodifikasi dalam waktu 10 hari terakhir.
Catatan:
Find juga menyediakan kriteria berupa –ctime , yang berfungsi semacam –mtime. Kriteria ini untuk memeriksa perubahan terakhir pada status berkas (diciptakan dan dimodifikasi).
 
 






21.9 MENCARI BERKAS YANG LEBIH BARU DARIPADA SUATU BERKAS
                Dengan menggunakan find, anda juga dapat mencari berkas-berkas yang tanggal pemodifikasiannya lebih baru daripada suatu berkas yang dijadikan acuan. Kriteria yang digunakan adalah:
                -newer namaberkas
Contoh:
                $ touch x0
                $ touch x1
                $ touch x2
                $ touch x3
                $ find . –newer x1 –print
                  .
                   ./x2
                   ./x3
                $ _
Hasil di atas menyatakan bahwa berkas yang lebih baru daripada x1 adalah:
-          Direktori kerja (dinyatakan dengan .)
-          Berkas x2 dan
-          Berkas x3

21.10 MENCARI BERKAS BERDASARKAN PERMISI AKSES BERKAS
                Find juga memungkinkan anda untuk mencari berkas berdasarkan suatu permisi akses. Secara umum, bentuk kriteria yang digunakan:
                -perm angka_oktal
Angka_oktal adalah kode dari permisi akses berkas.
Contoh:
                Find . –perm 644 –print
Akan menampilkan berkas-berkas pada direktori kerja yang mempunyai permisi akses berupa:
                Rw-r--r--
21.11 PEMAKAIAN KRITERIA BERGANDA
find  juga memungkinkan penggunaan kriteria berganda. Sebagai contoh:
                Find / -mtime +90 –size +100 –print
Akan menampilkan seluruh berkas pada sistem (dimulai dari root) yang:
-          Tidak pernah dimodifikasi lebih dari 90 hari dan
-          Berukuran lebih dari 100 blok
Dengan kata lain bentuk seperti di atas mencerminkan operasi “dan”.
                Adapun:
                Find /usr \( -name “*.c” –o –name “*.h”\) –print
Akan menampilkan nama-nama berkas yang berakhiran .c  atau .h yang berada dii bawah /usr. Pada contoh ini:
·         -o berarti “atau”
·         Tanda () digunakan untuk sebagai pengelompokan. Mengingat tanda ini mempunyai arti khusus bagi shell  maka harus ditulis dengan awalan\.
Selain operator –o, find juga menyediakan operator !. operator ini berguna untuk membuat operasi negasi. Misalnya:
        ! –newer berkas
Berarti menyatakan berkas-berkas yang tidak lebih baru daripada berkas.
21.12 MENJALANKAN PERINTAH BERDASARKAN FIND
        Pada contoh di depan, semua tindakan yang dilakukan oleh find berupa:
        -print
Yatu menampilkan hasil ke standard output. Namun, sesungguhnya find dapat melaksanakan tindakan yang lain. Dua jenis tindakan lain pada find selain –print berupa:
·         -exec cmd
·         -ok cmd
Dengan cmd  adalah perintah unix.
Tindakan –exec cmd
                Tindakan ini digunakan untuk mengeksekusi perintah unix cmd. Perintah cmd harus diakhiri dengan \; (backslash dan titik-koma). Argumen dari perintah cmd harus ditulis dengan {}. Argumen ini nantinya digantikan dengan nama path hasil find.

Sebagai contoh:
                Find . –size 0 –exec rm {} \;
Akan menghapus semua berkas dimulai dari direktori kerja yang ukurannya sama dengan 0 blok.
Contoh yang memberikan gambaran penggunaan –exec dapat dilihat berikut ini.
                $ touch a b # ciptakan berkas a dan b
                $ find . –size 0 –print
                ./a

                ./b








FILE ASLI

No comments:

Post a Comment