Difference between revisions of "Linux: find: contoh 25 pemakaian"

From OnnoWiki
Jump to navigation Jump to search
Line 171: Line 171:
 
  ./cool.php
 
  ./cool.php
  
==10. Find files with sgid/suid bits set==
+
==10. Temukan file dengan bit sgid / suid set==
  
The "perm" option of find command accepts the same mode string like chmod. The following command finds all files with permission 644 and sgid bit set.
+
Opsi "perm" untuk perintah find menerima string mode yang sama seperti chmod. Perintah berikut menemukan semua file dengan izin 644 dan bit sgid.
  
 
  # find / -perm 2644
 
  # find / -perm 2644
  
Similarly use 1664 for sticky bit. The perm option also supports using an alternative syntax instead of octal numbers.
+
Demikian pula penggunaan 1664 untuk sticky bit. Opsi perm juga mendukung penggunaan sintaks alternatif dan bukan bilangan oktal.
  
 
  $ find / -maxdepth 2 -perm /u=s 2>/dev/null
 
  $ find / -maxdepth 2 -perm /u=s 2>/dev/null
Line 188: Line 188:
 
  /sbin/mount.ecryptfs_private
 
  /sbin/mount.ecryptfs_private
  
Note that the "2>/dev/null" removes those entries that have an error of "Permission Denied"
+
Perhatikan bahwa "2> / dev / null" menghapus entri yang memiliki kesalahan "Permission Denied"
  
 
==11. Find readonly files==
 
==11. Find readonly files==

Revision as of 06:30, 19 June 2017

sumber: http://www.binarytides.com/linux-find-command-examples/

Perintah find Linux adalah perintah yang sangat berguna dan berguna untuk mencari file dari command line. Hal ini dapat digunakan untuk mencari file berdasarkan berbagai kriteria pencarian seperti perizinan, kepemilikan pengguna, tanggal modifikasi / waktu, ukuran dll. Dalam tulisan ini kita akan belajar menggunakan perintah find beserta berbagai pilihan yang didukungnya.

Perintah find tersedia pada sebagian besar distro linux secara default sehingga anda tidak perlu menginstal paket apapun. Perintah find adalah satu hal yang penting untuk dipelajari, jika anda ingin menjadi super produktif dengan command line di linux.

Sintaks dasar perintah find terlihat seperti ini

$ find location comparison-criteria search-term

Contoh Dasar

1. Daftar semua file di direktori sekarang dan sub directory

Perintah ini me-list semua file di direktori saat ini dan juga subdirektori di bawahnya.

$ find
.
./abc.txt
./subdir
./subdir/how.php
./cool.php

Perintah di atas sama dengan perintah berikut,

$ find .
$ find . -print

2. Cari directory atau path yang spesifik

Perintah berikut akan mencari file di test directory di directrory sekarang. Secara default akan Menuliskan semua file yang di temukan,

$ find ./test
./test
./test/abc.txt
./test/subdir
./test/subdir/how.php
./test/cool.php

Perintah berikut akan mencari file berdasarkan nama mereka,

$ find ./test -name "abc.txt"
./test/abc.txt

Kita juga dapat menggunakan *

$ find ./test -name "*.php"
./test/subdir/how.php
./test/cool.php

Perhatikan bahwa semua sub direktori dicari secara rekursif. Jadi ini cara yang sangat ampuh untuk menemukan semua file dari ekstensi yang diberikan.

Mencoba mencari "/" directory yang merupakan root, akan mencari keseluruhan sistem file termasuk perangkat yang terpasang dan perangkat penyimpanan jaringan. Jadi hati-hati. Tentu saja Anda bisa menekan Ctrl + C kapan saja untuk menghentikan perintah.

Saat menentukan direktori ("./test" dalam contoh ini), bagus untuk menghilangkan garis miring. Namun, jika direktori sebenarnya adalah symlink ke beberapa lokasi lain maka anda HARUS menentukan garis miring agar bisa bekerja dengan baik (find ./test/ ...)

Ignore huruf besar

Biasanya berguna untuk mengabaikan huruf besar saat mencari nama file. Untuk mengabaikan huruf besar, cukup gunakan opsi "iname" dan bukan opsi "name".

$ find ./test -iname "*.Php"
./test/subdir/how.php
./test/cool.php

Selalu lebih baik untuk membungkus istilah pencarian (parameter nama) dalam tanda kutip ganda atau tunggal. Tidak melakukan hal itu akan tampak kadang-kadang bekerja dan kadang memberi hasil yang aneh di lain waktu.

3. Batasi kedalaman traversal direktori

Perintah find secara default bergerak ke seluruh pohon direktori secara rekursif, yang akan mengkonsumsi waktu dan sumber daya. Namun kedalaman travesal direktori bisa ditentukan. Misalnya kita tidak ingin pergi lebih dari 2 atau 3 level turun di subdirektori. Hal ini dilakukan dengan menggunakan opsi maxdepth.

$ find ./test -maxdepth 2 -name "*.php"
./test/subdir/how.php
./test/cool.php
$ find ./test -maxdepth 1 -name *.php
./test/cool.php

Contoh kedua menggunakan maxdepth dari 1, yang berarti tidak akan turun lebih rendah dari 1 level, hanya di direktori sekarang.

Ini sangat berguna bila kita ingin melakukan pencarian terbatas hanya di direktori aktif atau max 1 level masuk ke sub directories dan bukan keseluruhan directory tree yang akan memakan waktu lebih lama.

Sama seperti maxdepth ada pilihan yang disebut mindepth yang melakukan apa yang tertuang pada namanya, yaitu, ia akan turun pada level N minimal sebelum mencari file.

4. Invert match

Dimungkinkan untuk mencari file yang tidak sesuai dengan nama atau pola yang diberikan. Ini sangat membantu bila kita mengetahui file mana yang akan dikecualikan dari pencarian.

$ find ./test -not -name "*.php"
./test
./test/abc.txt
./test/subdir

Jadi pada contoh di atas kita menemukan semua file yang tidak memiliki ekstensi php, baik file non-php. Perintah find juga mendukung tanda seru.

find ./test ! -name "*.php"

5. Kombinasikan beberapa kriteria pencarian

Dimungkinkan untuk menggunakan beberapa kriteria saat menentukan nama dan pembalik. Sebagai contoh

$ find ./test -name 'abc*' ! -name '*.php'
./test/abc.txt
./test/abc

Perintah find di atas mencari file yang dimulai dengan abc sesuai namanya dan tidak memiliki ekstensi php. Ini adalah contoh bagaimana ekspresi pencarian yang powerful dapat dibuat dengan perintah find.

OR operator

Bila menggunakan beberapa kriteria nama, perintah find akan menggabungkannya dengan operator AND, yang berarti hanya file-file yang memenuhi semua kriteria yang akan dicocokkan. Namun jika kita perlu melakukan pencocokan berbasis OR maka perintah find memiliki opsi "o".

$ find -name '*.php' -o -name '*.txt'
./abc.txt
./subdir/how.php
./abc.php
./cool.php

Perintah di atas mencari file yang diakhiri dengan ekstensi php atau ekstensi txt.

6. Cari hanya file atau direktori saja

Terkadang kita hanya ingin mencari file atau hanya direktori dengan nama tertentu. Temukan bisa melakukannya dengan mudah juga.

$ find ./test -name abc*
./test/abc.txt
./test/abc

Hanya file

$ find ./test -type f -name "abc*"
./test/abc.txt

Hanya directory

$ find ./test -type d -name "abc*"
./test/abc

7. Cari beberapa direktori secara bersamaan

Katakanlah anda ingin mencari di dalam 2 direktori terpisah. Sekali lagi, perintahnya sangat sederhana

$ find ./test ./dir2 -type f -name "abc*"
./test/abc.txt
./dir2/abcdefg.txt

Periksa, bahwa file tersebut mencantumkan file dari 2 direktori terpisah.

8. Mencari hidden file

File tersembunyi di linux dimulai dengan sebuah titik. Jadi mudah untuk memasukan dalam kriteria nama dan daftar semua file tersembunyi.

$ find ~ -type f -name ".*"

Temukan file berdasarkan izin

9. Temukan file dengan izin tertentu

Perintah find dapat digunakan untuk mencari file dengan izin khusus menggunakan opsi "perm". Perintah berikut mencari file dengan izin 0664

$ find . -type f -perm 0664
./abc.txt
./subdir/how.php
./abc.php
./cool.php

Ini berguna untuk menemukan file dengan hak akses yang salah yang dapat menyebabkan masalah keamanan. Pembalikan juga bisa diterapkan pada pemeriksaan izin.

$ find . -type f ! -perm 0777
./abc.txt
./subdir/how.php
./abc.php
./cool.php

10. Temukan file dengan bit sgid / suid set

Opsi "perm" untuk perintah find menerima string mode yang sama seperti chmod. Perintah berikut menemukan semua file dengan izin 644 dan bit sgid.

# find / -perm 2644

Demikian pula penggunaan 1664 untuk sticky bit. Opsi perm juga mendukung penggunaan sintaks alternatif dan bukan bilangan oktal.

$ find / -maxdepth 2 -perm /u=s 2>/dev/null
/bin/mount
/bin/su
/bin/ping6
/bin/fusermount
/bin/ping
/bin/umount
/sbin/mount.ecryptfs_private

Perhatikan bahwa "2> / dev / null" menghapus entri yang memiliki kesalahan "Permission Denied"

11. Find readonly files

Find all Read Only files.

$ find /etc -maxdepth 1 -perm /u=r
/etc
/etc/thunderbird
/etc/brltty
/etc/dkms
/etc/phpmyadmin
... output truncated ...

12. Find executable files

The following command will find executable files

$ find /bin -maxdepth 2 -perm /a=x
/bin
/bin/preseed_command
/bin/mount
/bin/zfgrep
/bin/tempfile
... output truncated ...

Search Files Based On Owners and Groups

13. Find files belonging to particular user

To find all or single file called tecmint.txt under /root directory of owner root.

$ find . -user bob
.
./abc.txt
./abc
./subdir
./subdir/how.php
./abc.php

We could also specify the name of the file or any name related criteria along with user criteria

$ find . -user bob -name '*.php'

Its very easy to see, how we can build up criteria after criteria to narrow down our search for matching files.

14. Search files belonging to group

Find all files that belong to a particular group.

# find /var/www -group developer

Did you know you could search your home directory by using the ~ symbol ?

$ find ~ -name "hidden.php"

Easy!! Search file and directories based on modification date and time

Another great search criteria that the find command supports is modification and accessed date/times. This is very handy when we want to find out which files were modified as a certain time or date range. Lets take a few examples

15. Find files modified N days back

To find all the files which are modified 50 days back.

# find / -mtime 50

16. Find files accessed in last N days

Find all files that were accessed in the last 50 days.

# find / -atime 50

17. Find files modified in a range of days

Find all files that were modified between 50 to 100 days ago.

# find / -mtime +50 –mtime -100

18. Find files changed in last N minutes.

Find files modified within the last 1 hour.

$ find /home/bob -cmin -60

19. Files modified in last hour

To find all the files which are modified in last 1 hour.

# find / -mmin -60

20. Find Accessed Files in Last 1 Hour

To find all the files which are accessed in last 1 hour.

# find / -amin -60

Search files and directories based on size

21. Find files of given size

To find all 50MB files, use.

# find / -size 50M

22. Find files in a size range

To find all the files which are greater than 50MB and less than 100MB.

$ find / -size +50M -size -100M

23. Find largest and smallest files

The find command when used in combination with the ls and sort command can be used to list out the largest files. The following command will display the 5 largest file in the current directory and its subdirectory. This may take a while to execute depending on the total number of files the command has to process.

$ find . -type f -exec ls -s {} \; | sort -n -r | head -5

Similary when sorted in ascending order, it would show the smallest files first

$ find . -type f -exec ls -s {} \; | sort -n | head -5

24. Find empty files and directories

The following command uses the "empty" option of the find command, which finds all files that are empty.

# find /tmp -type f -empty

To file all empty directories use the type "d".

$ find ~/ -type d -empty

Really very simple and easy

Some advanced operations

The find command not only finds files based on a certain criteria, it can also act upon those files using any linux command. For example, we might want to delete some files.

Here are some quick examples

25. List out the found files

Lets say we found files using find command, and now want to list them out as the ls command would have done. This is very easy.

$ find . -exec ls -ld {} \;
drwxrwxr-x 4 enlightened enlightened 4096 Aug 11 19:01 .
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./abc.txt
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:48 ./abc
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:26 ./subdir
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:26 ./subdir/how.php
-rw-rw-r-- 1 enlightened enlightened 29 Aug 11 19:13 ./abc.php
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php

26. Delete all matching files or directories

The following command will remove all text files in the tmp directory.

$ find /tmp -type f -name "*.txt" -exec rm -f {} \;

The same operating can be carried out with directories, just put type d, instead of type f.

Lets take another example where we want to delete files larger than 100MB

$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;

Summary

So that was a quick tutorial on the linux find command. The find command is one of the most essential commands on the linux terminal, that enables searching of files very easy. Its a must of all system administrators. So learn it up. Have any questions ? Leave a comment below.


Referensi