Bagaimana menemukan file dan direktori di Linux
Di sistem operasi Linux, perintah find dapat digunakan untuk mencari file dan direktori di komputer Anda. Untuk melanjutkan, pilih link dari daftar berikut atau telusuri setiap bagian secara berurutan.
Menggunakan Temukan, mulailah dengan membuka sesi terminal untuk mengakses baris perintah.
Fungsi dasar find
Lari Temukan tanpa opsi apa pun menghasilkan daftar setiap file dan direktori di dalam dan di bawah direktori kerja. Misalnya, jika direktori kerja Anda adalah / home / hope / Documents, berlari Temukan menghasilkan sebagai berikut:
- Setiap file di / home / hope / Documents.
- Setiap subdirektori di / home / hope / Documents.
- Setiap file di setiap subdirektori tersebut.
Mari kita lihat aksinya. Pertama, mari kita periksa direktori kerja kita dengan menggunakan perintah pwd:
pwd
/home/hope/Documents
Sekarang ayo lari Temukan tanpa opsi apa pun:
find
. ./images ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso
Dalam contoh ini, kami melihat total sepuluh file dan empat subdirektori di dalam dan di bawah file Dokumen map.
Perhatikan bahwa output dimulai dengan satu titik, yang mewakili direktori kerja. Lari Temukan tanpa opsi sama dengan menentukan bahwa pencarian harus dimulai di direktori kerja, seperti ini:
find .
Contoh di atas adalah cara yang “tepat” untuk digunakan Temukan. Jika Anda mencoba menggunakannya di sistem operasi mirip Unix lainnya, seperti FreeBSD, menentukan direktori diperlukan. Ini praktik yang baik untuk menggunakan bentuk perintah ini.
Menentukan tempat untuk mencari
Untuk hanya daftar file dan subdirektori yang terdapat dalam direktori / home / hope / Documents / images, tentukan argumen pertama dari perintah tersebut sebagai:
find /home/hope/Documents/images
/home/hope/Documents/images /home/hope/Documents/images/hp /home/hope/Documents/images/hp/snape.jpg /home/hope/Documents/images/hp/harry.jpg /home/hope/Documents/images/memes /home/hope/Documents/images/memes/winteriscoming.jpg /home/hope/Documents/images/memes/goodguygary.JPG /home/hope/Documents/images/memes/picard.jpg
Perhatikan bahwa jalur lengkap juga ditampilkan dalam hasil.
Jika direktori kerja kami adalah / home / hope / Documents, kita dapat menggunakan perintah berikut, yang menemukan file yang sama:
find ./images
Tapi kali ini, outputnya mencerminkan lokasi awal pencarian dan terlihat seperti ini:
./images ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg
Secara default, pencarian mencari di setiap subdirektori dari lokasi awal Anda. Jika Anda ingin membatasi berapa banyak tingkat subdirektori yang akan dicari, Anda dapat menggunakan -maxdepth opsi dengan nomor.
Misalnya, menentukan -maxdepth 1 mencari hanya di direktori tempat pencarian dimulai. Jika ada subdirektori yang ditemukan, mereka terdaftar, tetapi tidak dicari.
find . -maxdepth 1
. ./images ./bigfiles.txt ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./archlinux-2016.02.01-dual.iso
Menentukan -maxdepth 2 mencari direktori dan satu subdirektori dalam:
find . -maxdepth 2
. ./images ./images/hp ./images/memes ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso
Menentukan -maxdepth 3 mencari satu tingkat lebih dalam dari itu:
find . -maxdepth 3
. ./images ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso
Menemukan berdasarkan nama
Untuk membatasi hasil pencarian Anda agar hanya cocok dengan file dan direktori yang memiliki nama tertentu, gunakan -nama opsi dan beri nama dalam tanda kutip:
find . -name "picard.jpg"
./images/memes/picard.jpg
Anda juga dapat menggunakan wildcard sebagai bagian dari nama file Anda. Misalnya, untuk menemukan semua file yang namanya diakhiri dengan .jpg, Anda dapat menggunakan asterisk untuk mewakili nama file lainnya. Saat Anda menjalankan perintah, shell akan menggabungkan nama file menjadi apa pun yang cocok dengan pola:
find . -name "*.jpg"
./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/picard.jpg
Perhatikan bahwa perintah kami tidak mencantumkan file yang ekstensinya (dalam hal ini, JPG) menggunakan huruf kapital. Itu karena tidak seperti sistem operasi lain, seperti Microsoft Windows, nama file Linux peka huruf besar kecil.
Untuk melakukan penelusuran tidak peka huruf besar kecil, gunakan -iname pilihan:
find . -iname "*.jpg"
./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg
Menemukan hanya file, atau hanya direktori
Untuk mencantumkan file saja dan menghilangkan nama direktori dari hasil Anda, tentukan -tipe f:
find . -type f
./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso
Untuk mencantumkan direktori saja dan menghilangkan nama file, tentukan -tipe d:
find . -type d
. ./images ./images/hp ./images/memes ./hp-fanfic
Menemukan file berdasarkan ukuran
Untuk hanya menampilkan file dengan ukuran tertentu, Anda dapat menggunakan -ukuran pilihan. Untuk menentukan ukuran, gunakan tanda plus atau minus (untuk “lebih dari” atau “kurang dari”), angka, dan sufiks kuantitatif, seperti k, M, atau G.
Misalnya, untuk menemukan file yang “lebih besar dari 50 kilobyte”, gunakan -ukuran + 50k:
find . -size +50k
./images/memes/winteriscoming.jpg ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso
Untuk file “lebih besar dari 10 megabyte”, gunakan -ukuran + 10M:
find . -size +10M
./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso
Untuk “lebih besar dari 1 gigabyte”, gunakan -ukuran + 1G:
find . -size +1G
./archlinux-2016.02.01-dual.iso
Untuk file dalam rentang ukuran tertentu, gunakan dua -ukuran pilihan. Misalnya, untuk menemukan file “lebih besar dari 10 megabyte, tetapi lebih kecil dari 1 gigabyte”, tentukan -ukuran + 10M -ukuran -1G:
find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2
Menemukan file berdasarkan modifikasi, akses, atau perubahan status
Itu -waktu opsi membatasi pencarian dengan berapa hari sejak konten file diubah. Untuk menentukan hari di masa lalu, gunakan angka negatif. Misalnya, untuk hanya menemukan file yang diubah dalam dua hari terakhir (48 jam yang lalu), gunakan -waktu -2:
find . -mtime -2
Itu -mmin opsi melakukan hal yang sama, tetapi dalam hal menit, bukan hari. Misalnya, perintah ini hanya menampilkan file yang diubah dalam setengah jam terakhir:
find . -mmin -30
Opsi serupa adalah -ctime, yang memeriksa kapan status file terakhir diubah, diukur dalam beberapa hari. Perubahan status adalah perubahan dalam metadata file. Misalnya, mengubah izin file adalah perubahan status.
Pilihan -cmin mencari perubahan status, diukur dalam menit.
Anda juga dapat mencari kapan file terakhir diakses – dengan kata lain, kapan kontennya terakhir kali dilihat. Itu -sebuah waktu opsi digunakan untuk mencari file berdasarkan waktu akses terbaru mereka, diukur dalam hari.
Itu -amin opsi melakukan pembatasan pencarian yang sama, tetapi diukur dalam menit.
Mengalihkan keluaran ke file teks
Jika Anda melakukan pencarian yang sangat besar, Anda mungkin ingin menyimpan hasil pencarian Anda dalam sebuah file, sehingga Anda dapat melihat hasilnya nanti. Anda dapat melakukan ini dengan mengarahkan Temukan keluaran ke file:
find . -iname "*.jpg" > images.txt
Anda kemudian dapat membuka hasil Anda di editor teks, atau mencetaknya dengan kucing perintah.
cat images.txt
./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg
Atau, Anda dapat menyalurkan output Anda ke file tee perintah, yang mencetak output ke layar dan menulisnya ke file:
find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso
Menekan pesan kesalahan
Anda mungkin menerima pesan kesalahan “Izin ditolak” saat melakukan pencarian. Misalnya, jika Anda mencari direktori root sebagai pengguna biasa:
find /
find: `/var/lib/sudo/ts': Permission denied find: `/var/lib/sudo/lectured': Permission denied find: `/var/lib/polkit-1': Permission denied find: `/var/lib/container': Permission denied find: `/var/lib/gdm3/.dbus': Permission denied find: `/var/lib/gdm3/.config/ibus': Permission denied ...
Anda akan menerima pesan kesalahan itu jika Temukan mencoba mengakses file yang tidak diizinkan untuk dibaca oleh akun pengguna Anda. Anda mungkin dapat melakukan pencarian sebagai superuser (akar), yang memiliki akses lengkap ke setiap file di sistem. Tetapi tidak disarankan untuk melakukan hal-hal seperti akar, kecuali jika tidak ada pilihan lain.
Jika yang perlu Anda lakukan hanyalah menyembunyikan pesan “Izin ditolak”, Anda dapat menambahkan 2 &> 1 | grep -v “Izin ditolak” ke akhir perintah Anda, seperti ini:
find / 2>&1 | grep -v "Permission denied"
Contoh di atas memfilter pesan “Izin ditolak” dari penelusuran Anda. Bagaimana?
2> & 1 adalah pengalihan khusus yang mengirimkan pesan kesalahan ke keluaran standar untuk menyalurkan gabungan baris keluaran ke grep perintah. grep -v kemudian melakukan pencocokan terbalik pada “Izin ditolak”, yang hanya menampilkan baris yang tidak berisi string itu.
Mengarahkan dan menggunakan grep untuk memfilter pesan kesalahan adalah teknik yang berguna ketika “Izin ditolak” mengacaukan hasil pencarian Anda dan Anda tidak dapat melakukan pencarian sebagai root.
Contoh
find ~/. -name "*.txt" -amin -120
Temukan semua file di direktori home Anda dan di bawahnya yang diakhiri dengan ekstensi “.txt“. Menampilkan hanya file yang diakses dalam dua jam terakhir.
find . -name "*.zip" -size +10M -mtime -3
Temukan semua file di direktori kerja dan di bawah ini yang namanya memiliki ekstensi “.zip“dan yang ukurannya lebih besar dari 10 megabyte. Tampilkan hanya file yang isinya diubah dalam 72 jam terakhir.
find . -iname "*report*" -type f -maxdepth 2
Lakukan penelusuran tidak peka huruf besar kecil untuk file yang berisi kata “melaporkan“dalam namanya. Jika pencarian menemukan direktori dengan” laporan “di namanya, jangan tampilkan. Cari hanya di direktori kerja, dan satu tingkat direktori di bawahnya.
find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt
Temukan semua file di sistem yang namanya mengandung “init“, menyembunyikan pesan kesalahan. Tampilkan hasil di layar dan keluarkan ke file dalam direktori utama Anda bernama”initfiles.txt“.