Mencari file di linux melalui Terminal

Maaf teman – teman kali ini saya mencoba menerangkan tentang pencarian file di linux. Kali ini saya kan mencoba membawakannya dalam bahasa indonesia.
Studi kasus hari sabtu kemarin saya mengikuti ujian blankon desktop certified user. Dalam salah satu soal ada pertanyaan mengenai pencarian file di linux bisa dilakukan dengan cara atau metode apa saja. Untuk itu hari ini saya mencoba mengetahui lebih lanjut.
Pencarian file yang biasanya aku lakukan adalah mencari letak file berdasarkan nama file tersebut dengan perintah :
?
1
2
3
4
5
6
find / -name namafile.txt
Find = merupakan perintah pencarian
/ = direktori tempat pencarian
-name = penentuan nama sebagai parameter kunci
Namafile.txt = merupakan nama file yang dicari, extensi tidak harus txt bisa juga yang lain atau di kosongin.
Berdasarkan informasi hasil penjelajahan dengan google aku menemukan bahwa:
  1. Ada beberapa aplikasi pencarian.
  2. Mencari file dangan nama tertentu.
  3. Mencari file dengan tipe tertentu.
  4. Mencari file dengan ukuran tertentu.
  5. Mencari file yang dimiliki oleh user.
  6. Melakukan aksi untuk hasil pencarian.
  7. Mencari file dengan hak akses tertentu
  8. Dan banyak yang canggih lainnya..,
Kali ini aku akan mencoba menjelaskannya. Ya meskipun copypaste dari source lain, nanti ada kok sourcenya silahkan di cari satu – satu.
  1. Beberapa macam aplikasi pencarian di linux.
whereis
whereis khusus digunakan untuk mencari file binary, source dan manual page. penggunaanya cukup dengan perintah whereis namaprogram
locate
perintah locate digunakan untuk mencari file berdasarkan basis data yang dipakai updatedb. penggunaanya lebih luas dan umum dari pada whereis
find
perintah find inilah perintah yang luar biasa untuk digunakan.
  1. Mencari file dengan nama.
Mungkin ini adalah salah satu yang paling banyak digunakan yaitu mencari file berdasarkan namanya. Pada pencarian ini kita bisa menggunakan character wildcard seperti *. Misalnya kita ingin mencari file yang mengandung huruf e didalam nama filenya:
?
1
2
3
4
5
6
7
[root@voip-demo /]# find ~ -name "*e*"
/root/wget-log.3
/root/setup-sangoma.txt
/root/wget-log.2
/root/.asterisk_history
/root/nmap-asterisk.pl
/root/.gnupg/secring.gpg
Mudah bukan dan ini adalah contoh dimana kita mencari file dengan dua karakter dimana karakter pertama bebas dan karakter kudanya “e” maka perintahnya akan seperti ini :
?
1
2
3
4
5
6
[root@voip-demo /]# find -name "?e"
./opt/openfire/jre/lib/locale/de
./usr/src/kernels/2.6.18-238.19.1.el5-i686/arch/sh/boards/se
./usr/src/kernels/2.6.18-238.19.1.el5-i686/include/config/de
./usr/src/kernels/2.6.18-194.3.1.el5-i686/arch/sh/boards/se
./usr/src/kernels/2.6.18-194.3.1.el5-i686/include/config/de
Nah simple bukan , ini merupakan pencarian yang sering digunakan oleh saya dan mungkin anda juga akan sering menggunakannya. Sekarang bagaimana kalau kita ingin mencari file di suatu folder tertentu, contoh kita akan mencari file pada folder / yang nama filenya diawali dengan ‘C’ maka perintahnya seperti ini :
?
1
2
3
4
5
[root@voip-demo /]# find ~ -name "C*"
/root/CloudLinux-5.5-i386-DVD.iso
/root/CentOS-6.0-i386-bin-DVD.iso
/root/CentOS-5.6-i386-bin-DVD.iso
[root@voip-demo /]#
Oke udah mengerti kan kalau kita ingin mencari file pada direktori tertentu maka argumen pertama yaitu direktori yang akan kita cari maka pencarian akan dilakuakan pada direktori tersebut sampai sub dirktori dibawahnya.
  1. Mencari file dengan tipe tertentu.
Program find juga bisa digunakan untuk mencari file berdasarkan tipe tertentu contohnya kita akan mencari direktori-direktori dibawah /usr/local/ maka perintahnya seperti berikut :
?
1
2
3
4
5
6
7
[root@voip-demo /]# find ~ -type d
/root
/root/download
/root/.gnupg
/root/.ssh
/root/sipp_packages
[root@voip-demo /]#
Dan bila kita ingin tahu berapa jumlah direktori pada /usr/local/ kita tinggal piping perintah tadi ke program wc.
?
1
2
3
[root@voip-demo /]# find /usr/local/ -type d | wc -l
181
[root@voip-demo /]#
Seperti yang sudah kita bahas sebelumnya di Linux kita mengenal 7 macam tipe file, jadi yang dimaksudkan tipe file disini bukan ekstensinya tetapi tipe filenya dan kita sudah mengenal satu perintah untuk mencari file bertipe direktori, pada contoh berikut ini kita akan mencari file bertipe block special di direktori /dev/ tetapi yang memiliki nama file diawali dengan hda :
?
1
2
3
4
5
[root@voip-demo /]# find /dev/ -type b -name "hda*"
/dev/hda
/dev/hda1
/dev/hda2
[root@voip-demo /]#
Pada contoh diatas kita mengkombinasikan argumen type dan name dan berarti anda sudah mengerti cara menggunakan find dengan dua argumen. Untuk notasi tipe-tipe file yang dikenal oleh linux akan dijelaskan seperti berikut:
  1. b untuk block special
  2. c untuk character special
  3. d untuk direktori
  4. p untuk fifo
  5. f untuk regular file
  6. l untuk symbolik link
  7. s untuk socket
  8. Mencari file dengan ukuran tertentu
Pencarian ini juga merupakan salah satu yang sering digunakan apalagi oleh seorang administrator untuk mencari file yang kosong atau yang terlalu besar untuk sistem. Pada contoh berikut kita akan mencari file yang berukuran 0 byte :
?
1
2
3
4
[root@voip-demo /]# find /tmp/ -empty
/tmp/.webmin
/tmp/dotproject-20110818-135332
/tmp/.ICE-unix
Keluaran dari perintah diatas adalah file yang berukuran 0 byte (kosong) atau direktori yang kosong ( yang tidak ada file didalamnya ) jadi jangan kaget bila keluarannya terdapat banyak direktori. Contoh berikut adalah pencarian pada folder /home yang ukuran filenya lebih dari 200 KB perintahnya adalah :
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
[root@voip-demo /]# find ~ -size +200k
/root/wget-log.3
/root/CloudLinux-5.5-i386-DVD.iso
/root/wget-log.2
/root/1KDStaz0.9.iso
/root/wget-log
/root/CentOS-6.0-i386-bin-DVD.iso
/root/blankon-pattimura-cdlive-i386.iso
/root/install_sipp.txt
/root/CentOS-5.6-i386-bin-DVD.iso
/root/bb03-amd64-final.iso
/root/webmin-1.550-1.noarch.rpm
/root/openvpn-as-1.3.5-CentOS5.i386.rpm
/root/test_e1.txt
[root@voip-demo /]#
Contoh berikut kita akan mencari file pada folder bin yang berukuran kurang dari 10 KB dan bertipe regular file perintahnya adalah :
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
[root@voip-demo /]# find /bin/ -size -10k -type f
/bin/arch
/bin/mountpoint
/bin/doexec
/bin/raw
/bin/kbd_mode
/bin/asterisk.reload
/bin/alsacard
/bin/dbus-uuidgen
/bin/unicode_stop
/bin/dmesg
/bin/unicode_start
/bin/igawk
[root@voip-demo /]#
Nah kita udah bahas file yang kuran dari dan lebih dari sekarang gimana cari file yang ukurannya udah pasti kita tentukan, gampang sekali perintahnya sebagai berikut :
?
1
2
3
4
5
6
[root@voip-demo /]# find /bin/ -size 10k -type f
/bin/mktemp
/bin/tracepath
/bin/tracepath6
/bin/dbus-cleanup-sockets
[root@voip-demo /]#
Kita jangan menggunakan + atau – untuk mencari file dengan ukuran yang sudah pasti. Sekarang bagaimana kalau mencari file yang ukurannya diantara atau dalam range tertentu, tenag jangan pusing dulu perintahnya sebagai berikut :
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
[root@voip-demo /]# find /bin/ -size +10k -size -20k
/bin/env
/bin/alsaunmute
/bin/false
/bin/link
/bin/basename
/bin/logger
/bin/sync
/bin/kill
/bin/unlink
/bin/rmdir
/bin/true
/bin/taskset
/bin/dbus-send
/bin/hostname
/bin/dbus-monitor
[root@voip-demo /]#
Gampang banget ngak sih, ya iya lah masa ya iya dong. Dari tadi kan kita mencari file dengan ukuran Kilobyte gimana mencari file yang satuannya lain, nah ini beberapa contoh argumen yang dapat digunakan :
  1. b untuk blok 512 byte
  2. c untuk byte
  3. w untuk word
  4. k untuk kilobyte (1024)
  5. M untuk mega byte (1048576)
  6. G untuk giga byte ( (1073741824)
  7. Mencari file yang dimiliki oleh user.
Pencarian file berdasarkan kepimikan user dari file tersebut menggunakan perintah :
?
1
2
3
4
5
6
7
8
[root@voip-demo /]# find / -user root -name "*.iso"
/root/CloudLinux-5.5-i386-DVD.iso
/root/1KDStaz0.9.iso
/root/CentOS-6.0-i386-bin-DVD.iso
/root/blankon-pattimura-cdlive-i386.iso
/root/CentOS-5.6-i386-bin-DVD.iso
/root/bb03-amd64-final.iso
[root@voip-demo /]#
  1. Melakukan aksi untuk hasil pencarian
Dalam melakukan pencarian file dan melakukan perubahan terhadap file yang di temukan kita bisa menggunakan perintah :
Menghapus file yang berakhiran .iso yang ada dalam folder home, sampai ke subdirectory
?
1
find ~ -name “*.iso” -exec rm -rf {} \;
Memindahkan file yang berakhiran .iso yang ada dalam folder tes, sampai ke subdirectory ke folder backup
?
1
[root@voip-demo ~]# find . -name "*.iso" -exec mv  {} /root/backup/ \;
  1. Mencari file dengan hak akses tertentu
File-file world-writable, utamanya file sistem, dapat menjadi lubang keamanan jika seorang cracker memperoleh akses ke sistem anda dan memodifikasinya. Selain itu direktori world-writable berbahaya, karena memungkinkan cracker menambah atau menghapus file sesuai keinginannya. Untuk mencari seluruh file world-writable di sistem anda, gunakan perintah berikut:
?
1
root# find / -perm -2 -print
dan pastikan anda paham mengapa file tersebut world-writable. Dalam operasi normal, terdapat beberapa file writable, termasuk beberapa dari /dev, dan link simbolik.
  1. Mencari file dengan isi file / baris dari file sebagai acuannya.
Kita sering lupa terhadap beberapa file program yang kita buat, lupa nama, lupa tempat, bahkan lupa akan ekstensinya. Berikut adalah cara untuk mencafi file berdasarkan beberapa baris isi atau isi file tersebut:
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@voip-demo ~]# find /etc/asterisk | xargs grep "language" -sl
/etc/asterisk/alsa.conf
/etc/asterisk/minivm.conf
/etc/asterisk/extensions_minivm.conf
/etc/asterisk/modem.conf
/etc/asterisk/asterisk.conf
/etc/asterisk/console.conf
/etc/asterisk/extensions.conf.old_freePBX-2.7.0-10
/etc/asterisk/adtranvofr.conf
/etc/asterisk/sip.conf.rpmnew
/etc/asterisk/oss.conf
/etc/asterisk/unicall.conf
/etc/asterisk/vpb.conf
/etc/asterisk/extensions.conf.old_freePBX-2.7.0-5beta
/etc/asterisk/voicemail.conf.rpmnew
/etc/asterisk/chan_dahdi.conf.template
/etc/asterisk/say.conf
/etc/asterisk/zapata.conf.template
/etc/asterisk/a2billing.conf
/etc/asterisk/extensions_additional.conf
/etc/asterisk/iaxprov.conf
/etc/asterisk/iax.conf.old_freePBX-2.7.0-5beta
/etc/asterisk/extensions.conf
/etc/asterisk/extensions.lua
/etc/asterisk/sip.conf.old_freePBX-2.7.0-5beta
[root@voip-demo ~]#
Masih banyak penggunaan  file yang bisa di explorasi. Asalkan kita bisa menggunakan regex semua akan tampak semakin mudah.
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Source :
http://www.liamdelahunty.com/tips/linux_find_string_files.php
http://exclusivewordpress.com/2011/mencari-dan-mengganti-secara-rekursif-di-linux.html
http://www.cyberciti.biz/faq/howto-search-find-file-for-text-string/
http://catatan-iputusundika.blogspot.com/2010/01/mencari-file-di-linux.html
http://emka.web.id/linux/2011/belajar-linux-searching-file-di-linux-shell/
http://www.satudetik.com/linux/command-linux-mencari-string-didalam-file-dan-tampilkan-nama-filenya-saja/
http://rakhmadi.blogspot.com/2008/11/mencari-file-atau-direktori-pada-linux.html
http://kusprayitna.staff.uii.ac.id/2008/09/22/perintah-lanjutan-file-di-linux/
http://chikuso.wordpress.com/2008/10/20/mencari-file-di-linux/
http://www.ibiblio.org/pub/linux/docs/howto/translations/id/other-formats/html/ID-Security-HOWTO-5.html
http://pemula.linux.or.id/pengguna/command.html