Belajar dengan membaca secara berurutan

Pencarian File — find dan Wildcard

Artikel ini adalah bagian dari Kursus Linux yang membantumu menguasai keterampilan praktis Linux dari nol, mulai dari perintah dasar hingga shell script.
Pelajari cara menentukan banyak nama file sekaligus dengan wildcard * ? [], dan cara find mencari berdasarkan nama dengan -name dan berdasarkan tipe dengan -type — praktik langsung di terminal browser.

Wildcard — * ? []

Wildcard adalah simbol untuk menentukan sebagian nama file sekaligus.

* cocok dengan rentetan nol karakter atau lebih, ? cocok dengan tepat satu karakter, dan [] cocok dengan salah satu karakter di dalam tanda kurung siku.

Gabungkan dengan ls, seperti ls *.txt, untuk menampilkan hanya nama yang cocok.

Apa yang dicocokkan setiap wildcard
*.txtfile?.logdata[12].csvsemua file berakhiran .txtsatu karakter setelah filedata1.csv atau data2.csv
* cocok dengan rentetan apa pun, ? cocok dengan satu karakter, dan [] cocok dengan salah satu karakter di dalam tanda kurung siku.
SimbolYang dicocokkanContohFile yang cocok
*Rentetan nol karakter atau lebih*.txta.txt note.txt
?Tepat satu karakterlog?.txtlog1.txt (log10.txt tidak cocok)
[...]Salah satu karakter di dalam tanda kurung sikulog[12].txtlog1.txt log2.txt
[a-c]Salah satu karakter dalam rentangf[a-c].txtfa.txt fb.txt fc.txt
touch a.txt b.txt note.log         # buat file bahan
ls *.txt                           # a.txt b.txt
ls *.log                           # note.log
ls ?.txt                           # a.txt b.txt (satu karakter + .txt)

① Buat tiga file dengan ekstensi berbeda menggunakan touch a.txt b.txt note.log.

② Gabungkan wildcard dengan ls untuk menampilkan hanya file yang berakhiran .txt.

③ Lalu tampilkan hanya file yang berakhiran .log, dan pastikan kamu bisa mempersempit berdasarkan nama. (Jalankan dengan benar dan penjelasan akan muncul.)

Linux console
0 / 3 selesai
Loading Linux Terminal...

Satu Karakter atau Pilihan — ? dan []

? selalu cocok dengan tepat satu karakter, jadi pakai saat kamu ingin menetapkan jumlah karakter.

[] cocok dengan salah satu karakter yang ditulis di dalam tanda kurung siku, jadi [12] adalah 1 atau 2, dan kamu bisa menulis rentang seperti [a-c].

Keduanya mempersempit target lebih halus daripada *.

touch log1.txt log2.txt log9.txt logA.txt   # buat bahan
ls log?.txt                                  # 4 file dengan satu karakter di akhir
ls log[12].txt                               # hanya log1.txt log2.txt

① Buat empat file bernama berurutan dengan touch log1.txt log2.txt log9.txt logA.txt.

② Gabungkan ls dengan ? untuk menampilkan file di mana log diikuti satu karakter dan berakhiran .txt.

③ Gunakan [] untuk mempersempit ke hanya log1.txt dan log2.txt. Lalu pastikan rentang seperti [1-2] mempersempit ke 2 file yang sama.

Linux console
0 / 3 selesai
Loading Linux Terminal...

Mencari Berdasarkan Kondisi — find -name / -type

find menelusuri secara rekursif di bawah direktori awal dan mencari hal yang cocok dengan suatu kondisi.

Dengan find awal -name 'pola' kamu memberikan kondisi pada nama, dan dengan -type f (file) atau -type d (direktori) kamu memberikan kondisi pada tipe.

Pakai untuk menemukan file berdasarkan nama saat file itu terkubur dalam di hierarki.

KondisiArtiContoh
-name 'pola'Nama cocok dengan polafind . -name '*.log'
-type fHanya file biasafind . -type f
-type dHanya direktorifind . -type d
Kondisi find dan yang dicocokkannya
find . -name '*.txt'find . -type ffind . -type ditem bernama .txthanya filehanya direktori
-name menyaring berdasarkan pola nama, -type f berdasarkan file, dan -type d berdasarkan direktori.
mkdir -p tree/sub                  # buat pohon bahan
touch tree/a.txt tree/sub/b.txt    # tempatkan file di hierarki
find tree -name '*.txt'            # cari .txt di bawah tree secara rekursif
find tree -type d                  # hanya direktori di bawah tree

Beri tanda kutip pada pola find

Bungkus '*.txt' dalam find . -name '*.txt' dengan tanda kutip tunggal.

Tanpa tanda kutip, shell mengembangkan * terlebih dahulu, yang bisa menargetkan sesuatu selain yang kamu maksudkan.

Aturan dasarnya adalah memberi tanda kutip pada pola -name dan meneruskannya ke find itu sendiri.

① Buat direktori dua tingkat dengan mkdir -p tree/sub.

② Tempatkan file di induk maupun subdirektori dengan touch tree/a.txt tree/sub/b.txt.

③ Berikan tree ke find sebagai titik awal dan cari file .txt secara rekursif berdasarkan kondisi nama.

④ Lalu tampilkan hanya file berdasarkan kondisi tipe (find tree -type f), tampilkan juga hanya direktori, dan bandingkan ketiga hasilnya.

Linux console
0 / 5 selesai
Loading Linux Terminal...
QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Apa yang dicocokkan wildcard *?

Soal 2File mana yang dicocokkan ls log[12].txt?

Soal 3Apa yang ditampilkan saat kamu menjalankan find tree -type d?