@OP,
Apakah glob pettern tidak hanya digunakan untuk nama file?
Tidak, pola "glob" tidak hanya digunakan untuk nama file. Anda juga dapat menggunakannya untuk membandingkan string. Dalam contoh Anda, Anda dapat menggunakan case / esac untuk mencari pola string.
gg=svm-grid-ch
case "$gg" in
*grid* ) echo "found";;
esac
case "$gg" in ????grid*) echo "found";; esac
case "$gg" in s???grid*) echo "found";; esac
Di bash, kapan menggunakan pola glob dan kapan harus menggunakan ekspresi reguler? Terima kasih!
Regex lebih fleksibel dan "nyaman" daripada "pola glob", namun kecuali Anda melakukan tugas kompleks yang tidak dapat disediakan oleh "globbing / extended globbing", maka tidak perlu menggunakan regex. Regex tidak didukung untuk versi bash <3.2 (seperti yang disebutkan dennis), tetapi Anda masih dapat menggunakan extended globbing (dengan menyetel extglob
). untuk globbing yang diperluas, lihat di sini dan beberapa contoh sederhana di sini .
Pembaruan untuk OP: Contoh untuk menemukan file yang dimulai dengan 2 karakter (titik "." Berarti 1 karakter) diikuti dengan "g" menggunakan regex
misalnya keluaran
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
Di atas, file dicocokkan karena namanya berisi 2 karakter diikuti oleh "g". (yaitu ..g
).
Persamaannya dengan globbing akan menjadi seperti ini: (lihat referensi untuk arti ?
dan *
)
$ for file in ??g*; do echo $file; done
abg
degree
..g