Linux menemukan perintah
Linux menemukan perintah adalah perintah yang sangat berguna dan berguna untuk mencari file dari baris perintah. Ini dapat digunakan untuk menemukan file berdasarkan berbagai kriteria pencarian seperti izin, kepemilikan pengguna, tanggal/waktu modifikasi, ukuran dll. Dalam posting ini kita akan belajar menggunakan perintah find bersama dengan berbagai opsi yang didukungnya.
Perintah find tersedia di sebagian besar distro linux secara default sehingga Anda tidak perlu menginstal paket apa pun. Perintah find sangat penting untuk dipelajari, jika Anda ingin menjadi sangat produktif dengan baris perintah di linux.
Sintaks dasar dari perintah find terlihat seperti ini
$ find location comparison-criteria search-term
1. Daftar semua file di saat ini dan sub direktori
Perintah ini mencantumkan semua file di direktori saat ini serta subdirektori di direktori saat ini.
$ find . ./abc.txt ./subdir ./subdir/how.php ./cool.php
Perintahnya sama seperti berikut
$ find . $ find . -print
2. Cari direktori atau jalur tertentu
Perintah berikut akan mencari file di direktori pengujian di direktori saat ini. Mencantumkan semua file secara default.
$ find ./test ./test ./test/abc.txt ./test/subdir ./test/subdir/how.php ./test/cool.php
Perintah berikut mencari file berdasarkan namanya.
$ find ./test -name "abc.txt" ./test/abc.txt
Kami juga dapat menggunakan wildcard
$ find ./test -name "*.php" ./test/subdir/how.php ./test/cool.php
Perhatikan bahwa semua sub direktori dicari secara rekursif. Jadi ini adalah cara yang sangat ampuh untuk menemukan semua file dengan ekstensi tertentu.
Mencoba mencari direktori "/" yang merupakan root, akan mencari seluruh sistem file termasuk perangkat yang dipasang dan perangkat penyimpanan jaringan. Jadi berhati-hatilah. Tentu saja Anda dapat menekan Ctrl + c kapan saja untuk menghentikan perintah.
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/ ...)
Abaikan kasusnya
Sering kali berguna untuk mengabaikan kasus saat mencari nama file. Untuk mengabaikan kasus ini, cukup gunakan opsi "iname" alih-alih opsi "nama".
$ find ./test -iname "*.Php" ./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.
3. Batasi kedalaman traversal direktori
Perintah find secara default menelusuri seluruh pohon direktori secara rekursif, yang memakan waktu dan sumber daya. Namun kedalaman travesal direktori dapat ditentukan. Misalnya kita tidak ingin turun lebih dari 2 atau 3 tingkat di sub direktori. 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 1, yang berarti kedalamannya tidak akan lebih rendah dari 1 level, baik hanya di direktori saat ini.
Ini sangat berguna ketika kita ingin melakukan pencarian terbatas hanya di direktori saat ini atau sub direktori dalam level maksimal 1 dan bukan seluruh pohon direktori yang akan memakan waktu lebih lama.
Sama seperti maxdepth, ada opsi yang disebut mindepth yang melakukan apa yang disarankan oleh namanya, yaitu, ia akan mencapai setidaknya N level sebelum mencari file.
4. Balikkan kecocokan
Dimungkinkan juga untuk mencari file yang tidak cocok dengan nama atau pola tertentu. Ini berguna saat kami mengetahui file mana yang akan dikecualikan dari pencarian.
$ find ./test -not -name "*.php" ./test ./test/abc.txt ./test/subdir
Jadi pada contoh di atas kami menemukan semua file yang tidak memiliki ekstensi php, baik file non-php. Perintah find juga mendukung tanda seru sebagai ganti not.
find ./test ! -name "*.php"
5. Gabungkan beberapa kriteria penelusuran
Dimungkinkan untuk menggunakan beberapa kriteria saat menentukan nama dan pembalik. Misalnya
$ find ./test -name 'abc*' ! -name '*.php' ./test/abc.txt ./test/abc
Perintah find di atas mencari file yang dimulai dengan abc dalam namanya dan tidak memiliki ekstensi php. Ini adalah contoh bagaimana ekspresi pencarian yang kuat dapat dibangun dengan perintah find.
ATAU operator
Saat menggunakan beberapa kriteria nama, perintah find akan menggabungkannya dengan operator AND, yang berarti bahwa hanya file yang memenuhi semua kriteria yang akan dicocokkan. Namun jika kita perlu melakukan pencocokan berbasis OR maka perintah find memiliki tombol "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 direktori dengan nama tertentu saja. Temukan juga dapat melakukannya dengan mudah.
$ find ./test -name abc* ./test/abc.txt ./test/abc Only files $ find ./test -type f -name "abc*" ./test/abc.txt Only directories $ find ./test -type d -name "abc*" ./test/abc
Cukup berguna dan praktis!
7. Cari beberapa direktori sekaligus
Jadi 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, apakah itu mencantumkan file dari 2 direktori terpisah.
8. Temukan file tersembunyi
File tersembunyi di linux dimulai dengan titik. Jadi mudah untuk menyebutkan bahwa dalam kriteria nama dan daftar semua file yang tersembunyi.
$ find ~ -type f -name ".*"
9. Temukan file dengan izin tertentu
Perintah find dapat digunakan untuk menemukan 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 izin yang salah yang dapat menyebabkan masalah keamanan. Pembalikan juga dapat diterapkan pada pemeriksaan izin.
$ find . -type f ! -perm 0777 ./abc.txt ./subdir/how.php ./abc.php ./cool.php
10. Temukan file dengan set bit sgid/suid
Opsi "perm" dari perintah find menerima string mode yang sama seperti chmod. Perintah berikut menemukan semua file dengan izin 644 dan bit set sgid.
# find / -perm 2644
Demikian pula gunakan 1664 untuk bit lengket. Opsi perm juga mendukung penggunaan sintaks alternatif alih-alih angka 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 "Izin Ditolak"
11. Temukan file yang hanya dapat dibaca
Temukan semua file Hanya Baca.
$ find /etc -maxdepth 1 -perm /u=r /etc /etc/thunderbird /etc/brltty /etc/dkms /etc/phpmyadmin ... output truncated ...
12. Temukan file yang dapat dieksekusi
Perintah berikut akan menemukan file yang dapat dieksekusi
$ find /bin -maxdepth 2 -perm /a=x /bin /bin/preseed_command /bin/mount /bin/zfgrep /bin/tempfile ... output truncated ...
13. Temukan file milik pengguna tertentu
Untuk menemukan semua atau satu file bernama tecmint.txt di bawah direktori /root dari root pemilik.
$ find . -user bob . ./abc.txt ./abc ./subdir ./subdir/how.php ./abc.php
Kami juga dapat menentukan nama file atau kriteria terkait nama apa pun bersama dengan kriteria pengguna
$ find . -user bob -name '*.php'
Sangat mudah untuk melihat, bagaimana kita dapat membangun kriteria demi kriteria untuk mempersempit pencarian kita untuk file yang cocok.
14. Cari file milik grup
Temukan semua file milik grup tertentu.
# find /var/www -group developer
Tahukah Anda bahwa Anda dapat mencari direktori home Anda dengan menggunakan simbol ~ ?
$ find ~ -name "hidden.php"
Mudah!!
Cari file dan direktori berdasarkan tanggal dan waktu modifikasi
Kriteria pencarian hebat lainnya yang didukung oleh perintah find adalah modifikasi dan tanggal/waktu yang diakses. Ini sangat berguna ketika kita ingin mengetahui file mana yang dimodifikasi sebagai rentang waktu atau tanggal tertentu. Mari kita ambil beberapa contoh
15. Temukan file yang dimodifikasi N hari yang lalu
Untuk menemukan semua file yang dimodifikasi 50 hari yang lalu.
# find / -mtime 50
16. Temukan file yang diakses dalam N hari terakhir
Temukan semua file yang diakses dalam 50 hari terakhir.
# find / -atime 50
17. Temukan file yang dimodifikasi dalam beberapa hari
Temukan semua file yang diubah antara 50 hingga 100 hari yang lalu.
# find / -mtime +50 –mtime -100
18. Temukan file yang diubah dalam N menit terakhir.
Temukan file yang dimodifikasi dalam 1 jam terakhir.
$ find /home/bob -cmin -60
19. File diubah dalam satu jam terakhir
Untuk menemukan 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
21. Temukan file dengan ukuran tertentu
Cari file dan direktori berdasarkan ukuran. Untuk menemukan semua file 50MB, gunakan.
# find / -size 50M
22. Temukan file dalam rentang ukuran
Untuk menemukan semua file yang lebih besar dari 50MB dan kurang dari 100MB.
$ find / -size +50M -size -100M
23. Temukan file terbesar dan terkecil
Perintah find bila digunakan bersama 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 dieksekusi tergantung pada jumlah total file yang harus diproses oleh perintah.
$ find . -type f -exec ls -s {} \; | sort -n -r | head -5
Demikian pula ketika diurutkan dalam urutan menaik, itu akan menampilkan file terkecil terlebih dahulu
$ find . -type f -exec ls -s {} \; | sort -n | head -5
24. Temukan file dan direktori kosong
Perintah berikut menggunakan opsi "kosong" dari perintah find, yang menemukan semua file yang kosong.
# find /tmp -type f -empty
Untuk mengarsipkan semua direktori kosong gunakan ketik "d".
$ find ~/ -type d -empty
Benar-benar sangat sederhana dan mudah
Beberapa operasi lanjutan
Perintah find tidak hanya menemukan file berdasarkan kriteria tertentu, tetapi juga dapat bertindak atas file tersebut menggunakan perintah linux apa pun. Misalnya, kami mungkin ingin menghapus beberapa file.
Berikut adalah beberapa contoh cepat
25. Buat daftar file yang ditemukan
Katakanlah kita menemukan file menggunakan perintah find, dan sekarang ingin membuat daftarnya seperti yang akan dilakukan oleh perintah ls. 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 di direktori tmp.
$ find /tmp -type f -name "*.txt" -exec rm -f {} \;
Operasi yang sama dapat dilakukan dengan direktori, cukup masukkan tipe d, bukan tipe f.
Mari kita ambil contoh lain di mana kita ingin menghapus file yang lebih besar dari 100MB
$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;
Ringkasan
Demikian tutorial singkat tentang perintah find linux . Perintah find adalah salah satu perintah paling penting di terminal linux, yang memungkinkan pencarian file dengan sangat mudah. Ini adalah keharusan bagi semua administrator sistem. Jadi pelajarilah. Ada pertanyaan ? Tinggalkan komentar di bawah.