Difference between revisions of "Linux: find: contoh 25 pemakaian"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(13 intermediate revisions by the same user not shown) | |||
Line 134: | Line 134: | ||
$ find ./test -type d -name "abc*" | $ find ./test -type d -name "abc*" | ||
./test/abc | ./test/abc | ||
+ | |||
+ | Hitung file | ||
+ | |||
+ | find /mnt/pustaka/ -type f | wc -l | ||
+ | find /mnt/pustaka/ -type f -name "*.pdf" | wc -l | ||
==7. Cari beberapa direktori secara bersamaan== | ==7. Cari beberapa direktori secara bersamaan== | ||
Line 190: | Line 195: | ||
Perhatikan bahwa "2> / dev / null" menghapus entri yang memiliki kesalahan "Permission Denied" | Perhatikan bahwa "2> / dev / null" menghapus entri yang memiliki kesalahan "Permission Denied" | ||
− | ==11. | + | ==11. Mencari file readonly== |
− | + | Cari semua file Read Only | |
$ find /etc -maxdepth 1 -perm /u=r | $ find /etc -maxdepth 1 -perm /u=r | ||
Line 202: | Line 207: | ||
... output truncated ... | ... output truncated ... | ||
− | ==12. | + | ==12. Mencari file executable== |
− | + | Perintah berikut akan menemukan file executable | |
$ find /bin -maxdepth 2 -perm /a=x | $ find /bin -maxdepth 2 -perm /a=x | ||
Line 214: | Line 219: | ||
... output truncated ... | ... output truncated ... | ||
− | + | Cari Berkas Berdasarkan Owner dan Group | |
− | ==13. | + | ==13. Mencari file milik user tertentu== |
− | + | Untuk mencari semua file milik bob, | |
$ find . -user bob | $ find . -user bob | ||
Line 228: | Line 233: | ||
./abc.php | ./abc.php | ||
− | + | Kita juga bisa menentukan nama file atau kriteria terkait nama beserta kriteria pengguna | |
$ find . -user bob -name '*.php' | $ find . -user bob -name '*.php' | ||
− | + | Sangat mudah untuk melihat, bagaimana kita dapat membangun kriteria untuk mempersempit pencarian kita untuk file yang sesuai. | |
− | ==14. | + | ==14. Mencari file dari sebuah group== |
− | + | Temukan semua file yang termasuk dalam kelompok tertentu. | |
# find /var/www -group developer | # find /var/www -group developer | ||
− | + | Tahukah Anda bahwa Anda bisa mencari direktori home Anda dengan menggunakan simbol ~? | |
$ find ~ -name "hidden.php" | $ 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. | + | ==15. Mencari file yang dimodifikasi N hari yang lalu== |
− | + | Untuk menemukan semua file yang dimodifikasi 50 hari lalu. | |
# find / -mtime 50 | # find / -mtime 50 | ||
− | ==16. | + | ==16. Mencari file yang di akses dalam N hari terakhir== |
− | + | Temukan semua file yang diakses dalam 50 hari terakhir. | |
# find / -atime 50 | # find / -atime 50 | ||
− | ==17. | + | ==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 | # find / -mtime +50 –mtime -100 | ||
− | ==18. | + | ==18. Mencari file yang berubah dalam N minute terakhir== |
− | + | Temukan file yang dimodifikasi dalam 1 jam terakhir. | |
$ find /home/bob -cmin -60 | $ find /home/bob -cmin -60 | ||
− | ==19. | + | ==19. File diubah dalam jam terakhir== |
− | + | Temukan semua file yang dimodifikasi dalam 1 jam terakhir. | |
# find / -mmin -60 | # find / -mmin -60 | ||
− | ==20. | + | ==20. Temukan File yang Diakses dalam 1 Jam Terakhir== |
− | + | Untuk menemukan semua file yang diakses dalam 1 jam terakhir. | |
# find / -amin -60 | # find / -amin -60 | ||
− | + | =Cari file dan direktori berdasarkan ukuran= | |
− | ==21. | + | ==21. Temukan file dengan ukuran tertentu== |
− | + | Untuk menemukan semua file 50MB, gunakan. | |
# find / -size 50M | # find / -size 50M | ||
− | ==22. | + | ==22. Temukan file dalam kisaran ukuran== |
− | + | Untuk menemukan semua file yang lebih besar dari 50MB dan kurang dari 100MB. | |
$ find / -size +50M -size -100M | $ find / -size +50M -size -100M | ||
− | ==23. | + | ==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 | $ 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 | $ find . -type f -exec ls -s {} \; | sort -n | head -5 | ||
− | ==24. | + | ==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 | # find /tmp -type f -empty | ||
− | + | Untuk mengarsipkan semua direktori kosong gunakan tipe "d". | |
$ find ~/ -type d -empty | $ 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 {} \; | $ find . -exec ls -ld {} \; | ||
Line 341: | Line 341: | ||
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php | -rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php | ||
− | ==26. | + | ==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 {} \; | $ 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 {} \; | $ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \; | ||
− | |||
− | |||
− | |||
− | |||
Latest revision as of 07:08, 24 January 2025
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
Hitung file
find /mnt/pustaka/ -type f | wc -l find /mnt/pustaka/ -type f -name "*.pdf" | wc -l
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.
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 {} \;