Skip to main content

10. Wildcards


Summary Wildcard​

*
?
[]
[0-3]
[[:digit:]]

Apa yang akan dipelajari​

  • Apa itu wildcard
  • Kapan dan dimana wildcard bisa digunakan
  • Berbagai jenis wildcard
  • Bagaimana cara menggunakan wildcard di beberapa command

Wildcards​

  • Wildcard adalah karakter atau string yang digunakan untuk pencocokan pola (nama file dan direktori)
  • Kita bisa menggunakan wildcard untuk membuat pola pencarian yang apabila diperluas akan mengembalikan daftar file dan direktori yang cocok.
  • Terkadang wildcard disebut sebagai Globs atau glob patterns.
  • Globbing adalah tindakan memperluas wildcard ke daftar file dan direktori yang cocok.
  • wildcard dapat digunakan bersamaan dengan sebagian besar perintah (command) linux.
  • Jika suatu command menerima file atau direktori sebagai argumen, maka kita dapat menggunakan wildcard dalam argumen untuk menentukan file atau set file.
  • Command yang biasa menggunakan wildcard :
ls
rm
cp
mv

Wildcards utama​

  • Terdapat 2 wildcard utama, yaitu tanda "*" dan "?"
  • Tanda "*" match untuk nol atau lebih karakter (match dengan apapun)

ex :

*.txt = Untuk menemukan semua file yang berakhiran ".txt"
a* = Untuk menemukan semua file yang berawalan huruf "a"
a*.txt = Untuk menemukan semua file yang berawalan huruf "a" dan berakhiran ".txt"
  • Tanda "?" match untuk 1 karakter

ex :

?.txt = Untuk menemukan semua file yang hanya memiliki 1 karakter sebelum kata ".txt"
a? = Untuk menemukan semua file yang mempunyai 2 huruf dan diawali dengan huruf "a"
a?.txt = Untuk menemukan semua file yang berawalan huruf "a" lalu diikuti dengan 1 karakter setelahnya dan diakhiri dengan ".txt"

More Wildcards - Character Classes​

  • Character class ([]) digunakan untuk membuat pola pencarian yang sangat spesifik.
  • Match dengan salah satu karakter yang berada di dalam kurung siku. Match dengan tepat satu karakter.

ex :

[aeiou] = Untuk menemukan semua file yang memiliki 1 huruf, yaitu huruf vokal.

ex :

ca[nt]* = Untuk menemukan semua file yang berawalan "ca" diikuti karakter n atau t dan diiikuti oleh nol atau lebih karakter.

output :

can
cat
candy
catch

More Wildcards - Pengecualian karakter​

  • Gunakan tanda "[!]" untuk match karakter apapun selain karakter didalam kurung siku. Match dengan tepat satu karakter

ex :

[!aeiou]* = Untuk menemukan semua file yang tidak dimulai dengan huruf vokal.

output :

baseball
cricket

More Wildcards - Ranges​

  • Saat menggunakan character class, kita dapat membuat rentang (range) dengan memisahkan dua karakter dengan tanda hubung (-).

ex :

[a-g]* = Untuk menemukan semua file yang dimulai dengan huruf a,b,c,d,e,f atau g.

ex :

[3-6]* = Untuk menemukan semua file yang dimulai dengan angka 3,4,5 atau 6.

Named Character Classes​

  • Alih-alih membuat rentang sendiri, kita bisa menggunakan nama yang sudah ditentukan sebelumnya oleh character class.
  • Nama Character class ini mewakili rentang yang paling umum digunakan.

ex :

[[:alpha:]] = Match dengan huruf alfabet (huruf kecil dan besar)
[[:alnum:]] = Match dengan karakter alfanumerik (alfa, digit, huruf besar, huruf kecil, angka desimal apapun)
[[:digit:]] = Match dengan angka dan desimal dari 0 - 9
[[:lower:]] = Match dengan huruf kecil apapun
[[:space:]] = Match dengan wide space (spasi, tab, new line character)
[[:upper:]] = Match dengan huruf besar apapun

Matching Wildcard Pattern​

  • Gunakan escape character (), jika ingin match satu dari karakter wildcard
  • Untuk menghindari wildcard, cukup tempatkan tanda "" sebelum karakter wildcard
  • Untuk membuatnya lebih mudah, jangan beri nama file dengan tanda tanya (?) dan tanda bintang (*)

ex :

*\? = Untuk menemukan semua file yang berakhiran tanda "?"

output :

done?

Implementasi​

ex 1:

ls -F
ls *.txt = Untuk menemukan semua file yang berakhiran .txt
ls a* = Untuk menemukan semua file yang berawalan huruf a
ls a*.txt = Untuk menemukan semua file yang berawalan huruf a dan berakhiran .txt
ls a*t = Untuk menemukan semua file yang berawalan huruf a dan berakhiran huruf t
ls ? = Untuk menemukan semua file yang hanya mempunyai satu huruf
ls ?? = Untuk menemukan semua file yang mempunyai dua huruf
ls a?.txt = Menemukan semua file yang berawalan a diikuti satu huruf dan berakhiran .txt
ls -l a* = Menampilkan semua file yang berawalan a dengan long listing format

output 1:

a ab.txt b blues.mp3 c cot e g jazz.mp3 notes/
aa a.txt bb b.txt cat d f h music/ songs.txt
ab.txt a.txt b.txt songs.txt
a aa ab.txt a.txt
ab.txt a.txt
ab.txt a.txt
a b c d e f g h
aa bb
ab.txt
-rwr-rw-r-- 1 malik malik 0 Mar 5 11:08 a
-rwr-rw-r-- 1 malik malik 0 Mar 5 11:08 aa
-rwr-rw-r-- 1 malik malik 0 Mar 5 11:08 ab.txt
-rwr-rw-r-- 1 malik malik 0 Mar 5 11:08 a.txt

ex 2:

ls c[aeiou]t = Menemukan file yang berawalan c diikuti salah satu dari karakter dalam kurung dan diakhiri huruf t (urutan dalam kurung tidak penting)
ls [a-d]* = Menemukan semua file yang berawalan huruf a sampai d
ls *[[:digit:]] = Menemukan semua file yang berakhiran digit (angka)

output 2:

cat cot
a aa ab.txt a.txt b bb blues.mp3 b.txt c cat cot d
blues.mp3 jazz.mp3

ex 3:

mv *.txt notes = Memindahkan semua file yang berakhiran .txt ke direktori notes
ls notes
mv *.mp3 music = Memindahkan semua file mp3 ke direktori music
ls music
ls ?? = Sebelum menghapus, lihat terlebih dahulu file yang ingin dihapus dengan "ls"
rm ?? = Menghapus semua file yang mempunyai dua huruf

output 3:

ab.txt a.txt b.txt songs.txt
blues.mp3 jazz.mp3
aa bb