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