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

From OnnoWiki
Jump to navigation Jump to search
(Created page with "sumber: http://www.binarytides.com/linux-find-command-examples/ 25 simple examples of Linux find command Linux Commands By Silver Moon On Aug 12, 2013 31 Comments Linux f...")
 
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
sumber: http://www.binarytides.com/linux-find-command-examples/
 
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
  
25 simple examples of Linux find command
+
$ find location comparison-criteria search-term
Linux Commands By Silver Moon On Aug 12, 2013 31 Comments
 
Linux find command
 
  
The Linux find command is a very useful and handy command to search for files from the command line. It can be used to find files based on various search criterias like permissions, user ownership, modification date/time, size etc. In this post we shall learn to use the find command along with various options that it supports.
+
=Contoh Dasar=
  
The find command is available on most linux distros by default so you do not have to install any package. The find command is an essential one to learn, if you want to get super productive with the command line on linux.
+
==1. Daftar semua file di direktori sekarang dan sub directory==
  
The basic syntax of the find command looks like this
+
Perintah ini me-list semua file di direktori saat ini dan juga subdirektori di bawahnya.
  
$ find location comparison-criteria search-term
+
$ find
 +
.
 +
./abc.txt
 +
./subdir
 +
./subdir/how.php
 +
./cool.php
  
Basic examples
+
Perintah di atas sama dengan perintah berikut,
1. List all files in current and sub directories
 
  
This command lists out all the files in the current directory as well as the subdirectories in the current directory.
+
$ find .
 +
$ find . -print
  
$ find
+
==2. Cari directory atau path yang spesifik==
.
 
./abc.txt
 
./subdir
 
./subdir/how.php
 
./cool.php
 
  
The command is same as the following
+
Perintah berikut akan mencari file di test directory di directrory sekarang. Secara default akan Menuliskan semua file yang di temukan,
  
$ find .
+
$ find ./test
$ find . -print
+
./test
 +
./test/abc.txt
 +
./test/subdir
 +
./test/subdir/how.php
 +
./test/cool.php
  
2. Search specific directory or path
+
Perintah berikut akan mencari file berdasarkan nama mereka,
  
The following command will look for files in the test directory in the current directory. Lists out all files by default.
+
$ find ./test -name "abc.txt"
 +
./test/abc.txt
  
$ find ./test
+
Kita juga dapat menggunakan *
./test
 
./test/abc.txt
 
./test/subdir
 
./test/subdir/how.php
 
./test/cool.php
 
  
The following command searches for files by their name.
+
$ find ./test -name "*.php"
 +
./test/subdir/how.php
 +
./test/cool.php
  
$ find ./test -name "abc.txt"
+
Perhatikan bahwa semua sub direktori dicari secara rekursif. Jadi ini cara yang sangat ampuh untuk menemukan semua file dari ekstensi yang diberikan.
./test/abc.txt
 
  
We can also use wildcards
+
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.
  
$ find ./test -name "*.php"
+
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/ ...)
./test/subdir/how.php
 
./test/cool.php
 
  
Note that all sub directories are searched recursively. So this is a very powerful way to find all files of a given extension.
+
===Ignore huruf besar===
  
Trying to search the "/" directory which is the root, would search the entire file system including mounted devices and network storage devices. So be careful. Of course you can press Ctrl + c anytime to stop the command.
+
Biasanya berguna untuk mengabaikan huruf besar saat mencari nama file. Untuk mengabaikan huruf besar, cukup gunakan opsi "iname" dan bukan opsi "name".
  
When specifying the directory ("./test" in this example), its fine to omit the trailing slash. However, if the directory is actually a symlink to some other location then you MUST specify the trailing slash for it to work properly (find ./test/ ...)
+
$ find ./test -iname "*.Php"
 +
./test/subdir/how.php
 +
./test/cool.php
  
Ignore the case
+
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.
  
It is often useful to ignore the case when searching for file names. To ignore the case, just use the "iname" option instead of the "name" option.
+
==3. Batasi kedalaman traversal direktori==
  
$ find ./test -iname "*.Php"
+
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.
./test/subdir/how.php
 
./test/cool.php
 
  
Its always better to wrap the search term (name parameter) in double or single quotes. Not doing so will seem to work sometimes and give strange results at other times.
+
$ find ./test -maxdepth 2 -name "*.php"
 +
./test/subdir/how.php
 +
./test/cool.php
  
3. Limit depth of directory traversal
+
$ find ./test -maxdepth 1 -name *.php
 +
./test/cool.php
  
The find command by default travels down the entire directory tree recursively, which is time and resource consuming. However the depth of directory travesal can be specified. For example we don't want to go more than 2 or 3 levels down in the sub directories. This is done using the maxdepth option.
+
Contoh kedua menggunakan maxdepth dari 1, yang berarti tidak akan turun lebih rendah dari 1 level, hanya di direktori sekarang.
  
$ find ./test -maxdepth 2 -name "*.php"
+
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.
./test/subdir/how.php
 
./test/cool.php
 
  
$ find ./test -maxdepth 1 -name *.php
+
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.
./test/cool.php
 
  
The second example uses maxdepth of 1, which means it will not go lower than 1 level deep, either only in the current directory.
+
==4. Invert match==
  
This is very useful when we want to do a limited search only in the current directory or max 1 level deep sub directories and not the entire directory tree which would take more time.
+
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.
  
Just like maxdepth there is an option called mindepth which does what the name suggests, that is, it will go atleast N level deep before searching for the files.
+
$ find ./test -not -name "*.php"
4. Invert match
+
./test
 +
./test/abc.txt
 +
./test/subdir
  
It is also possible to search for files that do no match a given name or pattern. This is helpful when we know which files to exclude from the search.
+
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 -not -name "*.php"
+
find ./test ! -name "*.php"
./test
 
./test/abc.txt
 
./test/subdir
 
  
So in the above example we found all files that do not have the extension of php, either non-php files. The find command also supports the exclamation mark inplace of not.
+
==5. Kombinasikan beberapa kriteria pencarian==
  
find ./test ! -name "*.php"
+
Dimungkinkan untuk menggunakan beberapa kriteria saat menentukan nama dan pembalik. Sebagai contoh
  
5. Combine multiple search criterias
+
$ find ./test -name 'abc*' ! -name '*.php'
 +
./test/abc.txt
 +
./test/abc
  
It is possible to use multiple criterias when specifying name and inverting. For example
+
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.
  
$ find ./test -name 'abc*' ! -name '*.php'
+
===OR operator===
./test/abc.txt
 
./test/abc
 
  
The above find command looks for files that begin with abc in their names and do not have a php extension. This is an example of how powerful search expressions can be build with the find command.
+
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".
  
OR operator
+
$ find -name '*.php' -o -name '*.txt'
 +
./abc.txt
 +
./subdir/how.php
 +
./abc.php
 +
./cool.php
  
When using multiple name criterias, the find command would combine them with AND operator, which means that only those files which satisfy all criterias will be matched. However if we need to perform an OR based matching then the find command has the "o" switch.
+
Perintah di atas mencari file yang diakhiri dengan ekstensi php atau ekstensi txt.
  
$ find -name '*.php' -o -name '*.txt'
+
==6. Cari hanya file atau direktori saja==
./abc.txt
 
./subdir/how.php
 
./abc.php
 
./cool.php
 
  
The above command search for files ending in either the php extension or the txt extension.
+
Terkadang kita hanya ingin mencari file atau hanya direktori dengan nama tertentu. Temukan bisa melakukannya dengan mudah juga.
6. Search only files or only directories
 
  
Sometimes we want to find only files or only directories with a given name. Find can do this easily as well.
+
$ find ./test -name abc*
 +
./test/abc.txt
 +
./test/abc
  
$ find ./test -name abc*
+
Hanya file
./test/abc.txt
 
./test/abc
 
  
Only files
+
$ find ./test -type f -name "abc*"
 +
./test/abc.txt
  
$ find ./test -type f -name "abc*"
+
Hanya directory
./test/abc.txt
 
  
Only directories
+
$ find ./test -type d -name "abc*"
 +
./test/abc
  
$ find ./test -type d -name "abc*"
+
==7. Cari beberapa direktori secara bersamaan==
./test/abc
 
  
Quite useful and handy!
+
Katakanlah anda ingin mencari di dalam 2 direktori terpisah. Sekali lagi, perintahnya sangat sederhana
7. Search multiple directories together
 
  
So lets say you want to search inside 2 separate directories. Again, the command is very simple
+
$ find ./test ./dir2 -type f -name "abc*"
 +
./test/abc.txt
 +
./dir2/abcdefg.txt
  
$ find ./test ./dir2 -type f -name "abc*"
+
Periksa, bahwa file tersebut mencantumkan file dari 2 direktori terpisah.
./test/abc.txt
 
./dir2/abcdefg.txt
 
  
Check, that it listed files from 2 separate directories.
+
==8. Mencari hidden file==
8. Find hidden files
 
  
Hidden files on linux begin with a period. So its easy to mention that in the name criteria and list all hidden files.
+
File tersembunyi di linux dimulai dengan sebuah titik. Jadi mudah untuk memasukan dalam kriteria nama dan daftar semua file tersembunyi.
  
$ find ~ -type f -name ".*"
+
$ find ~ -type f -name ".*"
  
Find files based on permissions
+
Temukan file berdasarkan izin
9. Find files with certain permissions
 
  
The find command can be used to find files with a specific permission using the "perm" option. The following command searches for files with the permission 0664
+
==9. Temukan file dengan izin tertentu==
  
$ find . -type f -perm 0664
+
Perintah find dapat digunakan untuk mencari file dengan izin khusus menggunakan opsi "perm". Perintah berikut mencari file dengan izin 0664
./abc.txt
 
./subdir/how.php
 
./abc.php
 
./cool.php
 
  
This can be useful to find files with wrong permissions which can lead to security issues. Inversion can also be applied to permission checking.
+
$ find . -type f -perm 0664
 +
./abc.txt
 +
./subdir/how.php
 +
./abc.php
 +
./cool.php
  
$ find . -type f ! -perm 0777
+
Ini berguna untuk menemukan file dengan hak akses yang salah yang dapat menyebabkan masalah keamanan. Pembalikan juga bisa diterapkan pada pemeriksaan izin.
./abc.txt
 
./subdir/how.php
 
./abc.php
 
./cool.php
 
  
10. Find files with sgid/suid bits set
+
$ find . -type f ! -perm 0777
 +
./abc.txt
 +
./subdir/how.php
 +
./abc.php
 +
./cool.php
  
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.
+
==10. Temukan file dengan bit sgid / suid set==
  
# find / -perm 2644
+
Opsi "perm" untuk perintah find menerima string mode yang sama seperti chmod. Perintah berikut menemukan semua file dengan izin 644 dan bit sgid.
  
Similarly use 1664 for sticky bit. The perm option also supports using an alternative syntax instead of octal numbers.
+
# find / -perm 2644
  
$ find / -maxdepth 2 -perm /u=s 2>/dev/null
+
Demikian pula penggunaan 1664 untuk sticky bit. Opsi perm juga mendukung penggunaan sintaks alternatif dan bukan bilangan oktal.
/bin/mount
 
/bin/su
 
/bin/ping6
 
/bin/fusermount
 
/bin/ping
 
/bin/umount
 
/sbin/mount.ecryptfs_private
 
  
Note that the "2>/dev/null" removes those entries that have an error of "Permission Denied"
+
$ find / -maxdepth 2 -perm /u=s 2>/dev/null
11. Find readonly files
+
/bin/mount
 +
/bin/su
 +
/bin/ping6
 +
/bin/fusermount
 +
/bin/ping
 +
/bin/umount
 +
/sbin/mount.ecryptfs_private
  
Find all Read Only files.
+
Perhatikan bahwa "2> / dev / null" menghapus entri yang memiliki kesalahan "Permission Denied"
  
$ find /etc -maxdepth 1 -perm /u=r
+
==11. Mencari file readonly==
/etc
 
/etc/thunderbird
 
/etc/brltty
 
/etc/dkms
 
/etc/phpmyadmin
 
... output truncated ...
 
  
12. Find executable files
+
Cari semua file Read Only
  
The following command will find executable files
+
$ find /etc -maxdepth 1 -perm /u=r
 +
/etc
 +
/etc/thunderbird
 +
/etc/brltty
 +
/etc/dkms
 +
/etc/phpmyadmin
 +
... output truncated ...
  
$ find /bin -maxdepth 2 -perm /a=x
+
==12. Mencari file executable==
/bin
 
/bin/preseed_command
 
/bin/mount
 
/bin/zfgrep
 
/bin/tempfile
 
... output truncated ...
 
  
Search Files Based On Owners and Groups
+
Perintah berikut akan menemukan file executable
13. Find files belonging to particular user
 
  
To find all or single file called tecmint.txt under /root directory of owner root.
+
$ find /bin -maxdepth 2 -perm /a=x
 +
/bin
 +
/bin/preseed_command
 +
/bin/mount
 +
/bin/zfgrep
 +
/bin/tempfile
 +
... output truncated ...
  
$ find . -user bob
+
Cari Berkas Berdasarkan Owner dan Group
.
 
./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
+
==13. Mencari file milik user tertentu==
  
$ find . -user bob -name '*.php'
+
Untuk mencari semua file milik bob,
  
Its very easy to see, how we can build up criteria after criteria to narrow down our search for matching files.
+
$ find . -user bob
14. Search files belonging to group
+
.
 +
./abc.txt
 +
./abc
 +
./subdir
 +
./subdir/how.php
 +
./abc.php
  
Find all files that belong to a particular group.
+
Kita juga bisa menentukan nama file atau kriteria terkait nama beserta kriteria pengguna
  
# find /var/www -group developer
+
$ find . -user bob -name '*.php'
  
Did you know you could search your home directory by using the ~ symbol ?
+
Sangat mudah untuk melihat, bagaimana kita dapat membangun kriteria untuk mempersempit pencarian kita untuk file yang sesuai.
  
$ find ~ -name "hidden.php"
+
==14. Mencari file dari sebuah group==
  
Easy!!
+
Temukan semua file yang termasuk dalam kelompok tertentu.
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
+
# find /var/www -group developer
15. Find files modified N days back
 
  
To find all the files which are modified 50 days back.
+
Tahukah Anda bahwa Anda bisa mencari direktori home Anda dengan menggunakan simbol ~?
  
# find / -mtime 50
+
$ find ~ -name "hidden.php"
  
16. Find files accessed in last N days
 
  
Find all files that were accessed in the last 50 days.
+
=Cari file dan direktori berdasarkan tanggal modifikasi dan waktu=
  
# find / -atime 50
+
Kriteria pencarian besar lainnya yang didukung oleh perintah find adalah modifikasi dan tanggal / waktu yang diakses. Ini sangat berguna saat kita ingin mengetahui file mana yang dimodifikasi sebagai rentang waktu atau tanggal tertentu. Mari kita ambil beberapa contoh
  
17. Find files modified in a range of days
+
==15. Mencari file yang dimodifikasi N hari yang lalu==
  
Find all files that were modified between 50 to 100 days ago.
+
Untuk menemukan semua file yang dimodifikasi 50 hari lalu.
  
# find / -mtime +50 –mtime -100
+
# find / -mtime 50
  
18. Find files changed in last N minutes.
+
==16. Mencari file yang di akses dalam N hari terakhir==
  
Find files modified within the last 1 hour.
+
Temukan semua file yang diakses dalam 50 hari terakhir.
  
$ find /home/bob -cmin -60
+
# find / -atime 50
  
19. Files modified in last hour
+
==17. Mencari file yang di modifikasi dalam range beberapa hari==
  
To find all the files which are modified in last 1 hour.
+
Temukan semua file yang dimodifikasi antara 50 sampai 100 hari yang lalu.
  
# find / -mmin -60
+
# find / -mtime +50 –mtime -100
  
20. Find Accessed Files in Last 1 Hour
+
==18. Mencari file yang berubah dalam N minute terakhir==
  
To find all the files which are accessed in last 1 hour.
+
Temukan file yang dimodifikasi dalam 1 jam terakhir.
  
# find / -amin -60
+
$ find /home/bob -cmin -60
  
Search files and directories based on size
+
==19. File diubah dalam jam terakhir==
21. Find files of given size
 
  
To find all 50MB files, use.
+
Temukan semua file yang dimodifikasi dalam 1 jam terakhir.
  
# find / -size 50M
+
# find / -mmin -60
  
22. Find files in a size range
+
==20. Temukan File yang Diakses dalam 1 Jam Terakhir==
  
To find all the files which are greater than 50MB and less than 100MB.
+
Untuk menemukan semua file yang diakses dalam 1 jam terakhir.
  
$ find / -size +50M -size -100M
+
# find / -amin -60
  
23. Find largest and smallest files
+
=Cari file dan direktori berdasarkan ukuran=
  
The find command when used in combination with the ls and sort command can be used to list out the largest files.
+
==21. Temukan file dengan ukuran tertentu==
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
+
Untuk menemukan semua file 50MB, gunakan.
  
Similary when sorted in ascending order, it would show the smallest files first
+
# find / -size 50M
  
$ find . -type f -exec ls -s {} \; | sort -n | head -5
+
==22. Temukan file dalam kisaran ukuran==
  
24. Find empty files and directories
+
Untuk menemukan semua file yang lebih besar dari 50MB dan kurang dari 100MB.
  
The following command uses the "empty" option of the find command, which finds all files that are empty.
+
$ find / -size +50M -size -100M
  
# find /tmp -type f -empty
+
==23. Mencari file yang paling besar dan paling kecil==
  
To file all empty directories use the type "d".
+
Perintah find saat digunakan dalam kombinasi dengan perintah ls dan sort dapat digunakan untuk membuat daftar file terbesar.Perintah berikut akan menampilkan 5 file terbesar di direktori saat ini dan subdirektorinya. Ini mungkin memerlukan beberapa saat untuk mengeksekusi tergantung pada jumlah total file perintah yang harus diproses.
  
$ find ~/ -type d -empty
+
$ find . -type f -exec ls -s {} \; | sort -n -r | head -5
  
Really very simple and easy
+
Demikian pula ketika diurutkan dalam urutan menaik, itu akan menunjukkan file terkecil terlebih dahulu
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.
+
$ find . -type f -exec ls -s {} \; | sort -n | head -5
  
Here are some quick examples
+
==24. Mencari file dan directory yang kosong==
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.
+
Perintah berikut menggunakan opsi "empty" dari perintah find, yang menemukan semua file yang kosong.
  
$ find . -exec ls -ld {} \;
+
# find /tmp -type f -empty
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
+
Untuk mengarsipkan semua direktori kosong gunakan tipe "d".
  
The following command will remove all text files in the tmp directory.
+
$ find ~/ -type d -empty
  
$ find /tmp -type f -name "*.txt" -exec rm -f {} \;
+
=Beberapa Operasi Tingkat Lanjut=
  
The same operating can be carried out with directories, just put type d, instead of type f.
+
Perintah find tidak hanya menemukan file berdasarkan kriteria tertentu, juga dapat bertindak berdasarkan file-file yang menggunakan perintah linux. Misalnya, kita mungkin ingin menghapus beberapa file.
  
Lets take another example where we want to delete files larger than 100MB
+
==25. Lihat daftar file yang ditemukan==
  
$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;
+
Katakanlah kita menemukan file dengan menggunakan perintah find, dan sekarang ingin mencantumkannya sesuai perintah ls yang seharusnya dilakukan. Ini sangat mudah.
  
Summary
+
$ 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
  
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.
+
==26. Hapus semua file atau direktori yang cocok==
 +
 
 +
Perintah berikut akan menghapus semua file teks dalam direktori tmp.
 +
 
 +
$ find /tmp -type f -name "*.txt" -exec rm -f {} \;
 +
 
 +
Operasi yang sama dapat dilakukan dengan direktori, cukup taruh tipe d, bukan tipe f.
 +
 
 +
Mari kita ambil contoh lain dimana kita ingin menghapus file lebih besar dari 100MB
 +
 
 +
$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;
  
  

Latest revision as of 13:42, 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. Mencari file readonly

Cari semua file Read Only

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

12. Mencari file executable

Perintah berikut akan menemukan file executable

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

Cari Berkas Berdasarkan Owner dan Group

13. Mencari file milik user tertentu

Untuk mencari semua file milik bob,

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

Kita juga bisa menentukan nama file atau kriteria terkait nama beserta kriteria pengguna

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

Sangat mudah untuk melihat, bagaimana kita dapat membangun kriteria untuk mempersempit pencarian kita untuk file yang sesuai.

14. Mencari file dari sebuah group

Temukan semua file yang termasuk dalam kelompok tertentu.

# find /var/www -group developer

Tahukah Anda bahwa Anda bisa mencari direktori home Anda dengan menggunakan simbol ~?

$ find ~ -name "hidden.php"


Cari file dan direktori berdasarkan tanggal modifikasi dan waktu

Kriteria pencarian besar lainnya yang didukung oleh perintah find adalah modifikasi dan tanggal / waktu yang diakses. Ini sangat berguna saat kita ingin mengetahui file mana yang dimodifikasi sebagai rentang waktu atau tanggal tertentu. Mari kita ambil beberapa contoh

15. Mencari file yang dimodifikasi N hari yang lalu

Untuk menemukan semua file yang dimodifikasi 50 hari lalu.

# find / -mtime 50

16. Mencari file yang di akses dalam N hari terakhir

Temukan semua file yang diakses dalam 50 hari terakhir.

# find / -atime 50

17. Mencari file yang di modifikasi dalam range beberapa hari

Temukan semua file yang dimodifikasi antara 50 sampai 100 hari yang lalu.

# find / -mtime +50 –mtime -100

18. Mencari file yang berubah dalam N minute terakhir

Temukan file yang dimodifikasi dalam 1 jam terakhir.

$ find /home/bob -cmin -60

19. File diubah dalam jam terakhir

Temukan semua file yang dimodifikasi dalam 1 jam terakhir.

# find / -mmin -60

20. Temukan File yang Diakses dalam 1 Jam Terakhir

Untuk menemukan semua file yang diakses dalam 1 jam terakhir.

# find / -amin -60

Cari file dan direktori berdasarkan ukuran

21. Temukan file dengan ukuran tertentu

Untuk menemukan semua file 50MB, gunakan.

# find / -size 50M

22. Temukan file dalam kisaran ukuran

Untuk menemukan semua file yang lebih besar dari 50MB dan kurang dari 100MB.

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

23. Mencari file yang paling besar dan paling kecil

Perintah find saat digunakan dalam kombinasi dengan perintah ls dan sort dapat digunakan untuk membuat daftar file terbesar.Perintah berikut akan menampilkan 5 file terbesar di direktori saat ini dan subdirektorinya. Ini mungkin memerlukan beberapa saat untuk mengeksekusi tergantung pada jumlah total file perintah yang harus diproses.

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

Demikian pula ketika diurutkan dalam urutan menaik, itu akan menunjukkan file terkecil terlebih dahulu

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

24. Mencari file dan directory yang kosong

Perintah berikut menggunakan opsi "empty" dari perintah find, yang menemukan semua file yang kosong.

# find /tmp -type f -empty

Untuk mengarsipkan semua direktori kosong gunakan tipe "d".

$ find ~/ -type d -empty

Beberapa Operasi Tingkat Lanjut

Perintah find tidak hanya menemukan file berdasarkan kriteria tertentu, juga dapat bertindak berdasarkan file-file yang menggunakan perintah linux. Misalnya, kita mungkin ingin menghapus beberapa file.

25. Lihat daftar file yang ditemukan

Katakanlah kita menemukan file dengan menggunakan perintah find, dan sekarang ingin mencantumkannya sesuai perintah ls yang seharusnya dilakukan. Ini sangat mudah.

$ 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. Hapus semua file atau direktori yang cocok

Perintah berikut akan menghapus semua file teks dalam direktori tmp.

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

Operasi yang sama dapat dilakukan dengan direktori, cukup taruh tipe d, bukan tipe f.

Mari kita ambil contoh lain dimana kita ingin menghapus file lebih besar dari 100MB

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


Referensi