Tutorial ini berfokus pada cara menemukan file di Linux menggunakan perintah find dan locate.
Sebagai administrator sistem, adalah tugas yang sangat umum untuk mencari file tertentu di sistem file Anda .
Namun, terkadang sulit untuk menemukan file di Linux sistem file terutama jika Anda memiliki lusinan pengguna yang berbeda.
Ada dua perintah yang dapat membantu Anda mencapai tujuan:temukan dan temukan.
Dalam tutorial ini, kita akan melihat bagaimana menggunakan perintah tersebut secara efektif dan bagaimana perintah tersebut dapat disetel untuk mencapai apa yang kita cari.
Temukan File menggunakan perintah Temukan
Cara pertama untuk menemukan dan menemukan file di host Linux adalah dengan menggunakan perintah find.
Secara default, perintah find tersedia di semua distribusi dan memiliki sintaks berikut
$ find <options> <path> <expression>
Kiat cepat :apakah Anda mengalami kesulitan mengingat jika jalur atau ekspresi didahulukan?
Ingatlah bahwa untuk grEP adalah E ekspresi P ath, dan find adalah kebalikannya, jadi P di E ekspresi!
Find adalah perintah yang cukup kuat karena memiliki lebih banyak opsi daripada perintah locate.
Berikut adalah semua kemungkinan fungsi find di Linux.
Temukan file dengan temukan berdasarkan nama file
Penggunaan paling umum dari fungsi find adalah untuk menemukan file diberikan nama filenya .
$ find <path> -name <pattern>
Perbedaan utama antara find dan locate dalam mencari file adalah find akan mencari nama file sedangkan locate akan mencari jalur ke file.
Misalnya, jika kita kembali ke contoh runlevel yang kita gunakan sebelumnya, berikut cara mencari file runlevel menggunakan perintah find.
$ find / -name runlevel*
Apa bagian "2> /dev/null"?
Saya mengarahkan ulang keluaran kesalahan ke /dev/null menggunakan pengalihan keluaran untuk menghindari pesan kesalahan di konsol.
Temukan file menggunakan find by filetype
Seperti yang telah kita bahas sebelumnya dalam artikel kami tentang tautan keras dan lunak, file diberi jenis file dan digunakan sebagai cara untuk membedakannya.
Berikut adalah rekap semua jenis file yang digunakan di Linux.
- f :file standar
- d :folder atau direktori
- l :tautan simbolis atau tautan lunak
- b :memblokir perangkat (seperti hard drive misalnya)
- c :perangkat karakter (port serial, kartu suara)
- p :bernama pipa
- s :soket
Mengetahui semua jenis file tersebut, Anda sekarang dapat mencari file menurut jenis file dengan perintah find.
$ find <path> -type <filetype>
Misalnya, jika kami menelusuri semua tautan simbolik pada host, kami akan mengeluarkan perintah berikut.
$ find / -type l
Parameter dapat digabungkan, misalnya jika saya mencari semua tautan simbolik yang nama filenya diakhiri dengan ".service" (untuk mengisolasi semua layanan systemd misalnya), saya akan menjalankan perintah berikut.
$ find / -type l -name *.service
Menemukan file menggunakan pola (untuk ekstensi)
Sama halnya dengan perintah locate, Anda dapat menemukan file di Linux menggunakan sebuah pola.
Sebagai pengingat, pola adalah string yang menyertakan karakter globbing (seperti *, ?, atau rentang).
Opsi ini terutama saat Anda mencoba mencari file yang diberi ekstensi, misalnya file Javascript.
Untuk menemukan file di Linux menggunakan pola, jalankan perintah berikut
$ find <path> -name ".<extension>"
$ find / -name "*.js"
File file di Linux oleh pemilik
Terkadang, Anda ingin mengisolasi file yang dibuat oleh pengguna tertentu .
Saat menghapus pengguna di host Anda, Anda mungkin ingin menghapus semua file yang terkait dengan pengguna ini misalnya.
Terkadang, pengguna membuat file dari direktori home mereka dan menghapus direktori home pengguna saja tidak cukup.
Akibatnya, untuk menemukan file yang dibuat oleh pengguna tertentu di Linux, jalankan perintah berikut
$ find <path> -user <user>
Misalnya, untuk menemukan semua file yang dimiliki oleh “john” di host saya, saya akan menjalankan perintah berikut.
$ find / -user john
Sekarang bagaimana jika saya ingin menghapus semua file milik john dengan perintah sederhana?
Ini dapat dengan mudah dicapai dengan menggunakan tanda hapus.
$ find / -user john -delete
Menemukan file di Linux dengan izin
Dengan menggunakan perintah find, Anda juga dapat menemukan dan menemukan file yang memiliki izin tertentu di host Anda.
$ find <path> -perm <permissions>
Sebagai pengingat, berikut adalah cara kerja izin file di Linux.
Untuk menemukan semua file yang memiliki izin penuh (777 diberi notasi biner), Anda dapat menjalankan perintah berikut.
$ find / -perm 777
Ini bisa sangat berguna jika untuk alasan keamanan Anda ingin memeriksa apakah tidak ada file yang dikonfigurasi dengan izin penuh pada sistem Anda.
Temukan file dengan temukan berdasarkan ukuran
Cara lain yang sangat berguna untuk menemukan dan menemukan file di Linux adalah dengan menemukan perintah find dengan opsi ukuran.
Opsi ukuran memungkinkan Anda mencari file dengan ukuran yang sama persis dengan yang Anda tentukan, lebih besar dari ukuran tertentu atau lebih rendah dari ukuran tertentu.
Untuk mencari file berdasarkan ukuran, gunakan perintah berikut
$ find <path> -size <size>
Ukuran ditentukan oleh awalan berikut:
- c :byte
- b :blok 512-byte
- k :Kilobyte
- L :Megabyte
- G :Gigabyte
Anda dapat menentukan “+” jika Anda mencari file yang lebih besar dari ukuran yang ditentukan.
Misalnya, untuk menemukan file yang lebih besar dari 1 GB di sistem Anda, jalankan perintah berikut
$ find / -size +1G
Untuk menemukan file yang lebih kecil dari 10 MB di sistem Anda , jalankan perintah berikut
$ find / -size -10M
Terakhir, untuk mencari file yang persis ukuran yang ditentukan dalam kueri, Anda tidak boleh menambahkan awalan plus atau minus apa pun ke perintah.
$ find / -size 1024k
Perintah yang baru saja ditentukan akan menemukan semua file yang berukuran persis 1024 Kbs di host Anda.
Temukan file di Linux berdasarkan tanggal modifikasi
Dengan menggunakan find, Anda juga dapat menemukan file dengan tanggal modifikasi, terbaru atau tidak.
Perintah ini sangat berguna dan cukup sering digunakan oleh administrator sistem untuk menemukan file atau direktori yang baru saja dimodifikasi.
Untuk mencari file menggunakan find by modifikasi tanggal, jalankan perintah berikut
$ find <path> -mtime <time>
Di mana waktu menunjukkan file yang dimodifikasi 24* .
Akibatnya, waktu dinyatakan dalam hari.
Sama halnya dengan opsi ukuran, Anda dapat menambahkan “plus ” atau “minus ” operator ke waktu untuk mencari file yang diubah lebih dari
Misalnya, untuk mencari file yang diubah tepat 3 jam yang lalu , Anda akan menjalankan perintah berikut.
$ find / -mtime 3
Untuk menemukan file yang dimodifikasi lebih dari satu minggu yang lalu , Anda akan menjalankan perintah berikut
$ find / -mtime +7
Untuk menemukan file yang dimodifikasi kurang dari dua hari yang lalu , Anda akan menjalankan perintah berikut
$ find / -mtime -2
Temukan file dengan kedalaman dinamis
Seperti yang mungkin Anda perhatikan, sejak awal tutorial ini, kami memberikan contoh pencarian file yang dimulai dari direktori root.
Akibatnya, semua folder dijelajahi secara rekursif.
Namun, kita dapat membatasi jumlah direktori yang dilalui secara rekursif dari satu direktori, ini disebut depth.
Untuk membatasi pencarian file pada kedalaman tertentu , jalankan kueri berikut
$ find <path> -maxdepth <depth>
Sebagai contoh, berikut adalah bagaimana Anda dapat membatasi pencarian file ke direktori saat ini, tanpa direktori anak-anak yang sedang diramban.
$ find / -maxdepth 1
Anda jelas dapat menggabungkan perintah ini dengan flag nama untuk mencari file dengan nama tertentu di direktori saat ini.
$ find . -maxdepth 1 -name *.tar
Merantai pencarian dengan -exec
Dalam beberapa kasus, mungkin berguna untuk menghubungkan perintah find dengan perintah exec.
Opsi exec dapat digunakan untuk menyatukan beberapa perintah :mengambil hasil dari yang pertama sebagai input dari yang kedua.
Katakanlah misalnya Anda ingin menemukan semua file yang dimodifikasi kurang dari satu menit yang lalu
$ find /home/user -mmin -1
./file1
Sekarang katakanlah Anda ingin menghapus semua file yang diubah kurang dari satu menit yang lalu.
Anda dapat merangkai perintah find dengan opsi -exec menggunakan sintaks ini.
$ find /home/user -mmin -1 -exec echo rm -f '{}' \;
Kami jelas pertama-tama "menggemakan" hasil karena kami ingin memastikan bahwa kami menghapus file yang benar.
Saat Anda siap untuk menghapus file tersebut, cukup hapus perintah echo.
$ find /home/user -mmin -1 -exec rm -f '{}' \;
Temukan File di Linux menggunakan perintah Locate
Cara hebat lainnya untuk menemukan dan menemukan file di Linux adalah dengan menggunakan lokasi perintah.
Prasyarat
Jika perintah locate in tidak tersedia di sistem Anda, pastikan untuk membaca bagian berikutnya untuk membuat locate berjalan di sistem Anda.
a – Menginstal Locate pada distribusi berbasis APT dan RPM
Untuk memasang lokasi , Anda akan memerlukan hak sudo di host Linux Anda.
Untuk memeriksa apakah locate diinstal pada host Anda, jalankan perintah locate di baris perintah.
$ locate
Jika locate terinstal di komputer Anda, ekspresi akan ditampilkan
Jika locate tidak diinstal pada host Anda, pesan kesalahan akan ditampilkan
Untuk menginstall locate di Ubuntu 18.04 dan Debian 10, jalankan perintah berikut.
$ sudo apt-get install mlocate
Demikian pula, jika Anda menggunakan distribusi berbasis CentOS atau Fedora, jalankan perintah berikut untuk menginstal locate.
$ sudo yum install mlocate
b – Memperbarui basis data mlocate Anda
lokasi function bekerja dengan database lokal yang tersimpan di sistem file Anda yang menyimpan setiap nama file dari host Anda.
Saat melakukan perintah locate, locate akan mencari ke database yang disiapkan oleh updatedb untuk file yang Anda cari.
Secara berkala, tugas cron memperbarui mlocate.db file untuk Anda cari entri terbaru.
Basis data terletak di /var/lib/mlocate/mlocate.db secara default dan file konfigurasi updatedb disimpan di /etc/updatedb.conf .
Untuk saat ini, Anda dapat meninggalkan opsi default dan menjalankan perintah updatedb sederhana untuk memperbarui database Anda.
$ sudo updatedb
Menemukan file yang diberi pola nama
Cara paling dasar untuk menemukan file di Linux adalah menyediakan pola untuk perintah locate .
Secara default, sintaks dari perintah locate adalah sebagai berikut
$ locate [OPTION]... [PATTERN]...
Jika Anda mencari file konfigurasi tertentu di sistem Anda, cara mudah untuk menemukannya adalah dengan memberikan nama file lengkapnya ke perintah locate.
$ locate updatedb.conf
Seperti yang Anda lihat, perintah locate mengembalikan path lengkap ke file yang saya cari.
Menemukan file di direktori terbatas
Terkadang, Anda mungkin tidak memiliki akses ke beberapa direktori di sistem Anda.
Akibatnya, Anda tidak akan dapat menemukan file yang ada di dalamnya.
Mari kita ambil contoh folder terlarang yang berisi file bernama “file terbatas “.
Untuk menemukan file yang terletak di direktori terbatas, Anda harus menjalankan perintah locate dengan hak istimewa sudo.
$ sudo locate restricted-file
Menemukan file menggunakan pola
Menggunakan perintah locate, Anda dapat memberikan "pola" dalam bentuk karakter globbing .
Globbing karakter , juga disebut wildcard, adalah karakter yang digunakan untuk mencocokkan satu atau beberapa entri dengan ekspresi yang disederhanakan.
Yang paling populer adalah “* ” yang akan cocok dengan karakter apa pun termasuk tidak ada.
Berikut tabel rekap untuk karakter globbing dan fungsinya.
Wildcard | Deskripsi | Contoh | Cocok | Tidak cocok |
---|---|---|---|---|
* | cocok dengan jumlah karakter apa pun termasuk tidak ada | devco* | devconnected, devcoco, devco.com | devdevco, |
[abc] | cocok dengan satu karakter yang diberikan dalam tanda kurung | [ab]ab | aab, sayang | cab |
[a-z] | mencocokkan satu karakter dari rentang (tergantung lokal) yang diberikan dalam tanda kurung | runlevel[0-9] | runlevel1, runlevel2, runlevel6 | runlevel, runlevelo |
Sebagai contoh, berikut adalah cara untuk menemukan semua file teks di sistem Anda.
$ locate *.txt
Menemukan file menggunakan ekspresi reguler
Seperti yang dinyatakan dalam halaman manual resmi untuk locate, perintah locate menerima sebuah pola sebagai masukan.
Ini berarti Anda dapat memberikan ekspresi reguler ke perintah locate.
Untuk menemukan dan menemukan file yang diberi regex, gunakan –regex pilihan untuk perintah locate.
$ locate --regex <regex>
Misalnya, untuk mengisolasi semua file yang dimulai dengan runlevel diikuti dengan angka, Anda akan menjalankan perintah berikut.
$ locate --regex runlevel[0-9]+
Saat menggunakan regex, ada satu poin penting yang harus Anda perhatikan saat mencari file.
Perintah locate mencari jalur ke file di database lokalnya.
Akibatnya, saat mencari file, Anda harus menyadari bahwa ekspresi reguler Anda harus cocok dengan jalur ke file dan bukan hanya nama file.
Misalnya, jika saya mencari file yang dimulai dengan "run", tidak ada hasil yang tidak akan dikembalikan karena jalur ke file dimulai dengan "/usr".
Temukan file menggunakan opsi tidak peka huruf besar/kecil
Saat mencari file di sistem file Anda, Anda mungkin tidak yakin tentang cara nama file tertentu.
Apakah itu ditulis dalam huruf besar atau huruf kecil? Apakah itu mengandung huruf besar sama sekali?
Untuk menemukan dan menemukan file menggunakan opsi case-insensitive, tambahkan opsi -i ke perintah locate Anda.
$ locate -i <file_pattern>
Cari file menurut konten menggunakan grep
Dalam beberapa kasus, Anda mungkin tertarik untuk mencari file yang cocok dengan kata tertentu dari kalimat yang terletak DI DALAM file.
Ini dapat terjadi misalnya jika Anda mencoba mencari file yang berisi peristiwa log tertentu.
Cara pertama untuk mencari file yang cocok dengan kata tertentu adalah dengan menggunakan perintah grep
$ grep -r <pattern> <path>
Catatan :jangan lupa opsi “-r” jika Anda mencari file melalui seluruh direktori.
Sebagai contoh. jika Anda mencari semua file yang memiliki "kesalahan" dalam kontennya, yang terletak di direktori home Anda, Anda akan mengetik
$ grep -r error /home/user
Dalam beberapa kasus, Anda mungkin ingin mencari file yang diberi ekspresi reguler.
Untuk menemukan file menggunakan ekspresi reguler, gunakan opsi “-E”.
$ grep -r -E <expression> <path>
Katakanlah misalnya Anda ingin menemukan file yang cocok dengan pola 'abc' di salah satu file Anda, ketikkan
$ grep -r -E "abc.*" --color /home/user
Catatan :opsi warna digunakan untuk menyorot kecocokan menggunakan perintah grep.
Temukan file menggunakan yang
Cara hebat lainnya untuk menemukan file di Linux adalah dengan menggunakan perintah which.
Perintah which digunakan untuk mencari file yang terkait dengan perintah tertentu.
Ini bisa menjadi sangat berguna ketika Anda tidak tahu di mana Anda menyimpan binari Anda untuk sebuah perintah atau jika Anda perlu mencari perintah untuk menambahkannya ke PATH Anda.
$ which <command>
Misalnya, untuk mencari file yang terkait dengan perintah “ls”, ketikkan
$ which ls
/usr/bin/ls
Seperti yang Anda lihat, Anda diberikan jalur lengkap ke file.
Temukan binari menggunakan whereis
Demikian pula, sangat mungkin untuk mencari file dengan menggunakan perintah whereis.
Perintah “whereis” dapat dilihat sebagai superset dari perintah “which” :“whereis” memberikan informasi tentang nama perintah, lokasi file serta lokasi halaman manual.
Untuk menjalankan whereis, cukup ketik “whereis” dan tambahkan nama perintah Anda.
$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
Sangat berguna!
Kesimpulan
Dalam tutorial hari ini, Anda telah mempelajari cara menemukan dan menemukan file di Linux menggunakan dua perintah penting:cari dan temukan.
Meskipun opsi disajikan satu per satu, Anda harus ingat bahwa opsi tersebut dapat digabungkan agar dapat menentukan lebih banyak lagi file yang Anda cari.
Seperti biasa, jika Anda tertarik dengan administrasi sistem Linux, kami memiliki bagian lengkap yang didedikasikan untuk Linux di situs web kami.