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:
|
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.
|
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
|
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.
|
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