Pola globbing nama file standar yang cocok dengan digit adalah [0-9]
. Ini cocok dengan satu digit:
cat file[0-9].txt
Untuk memilih hanya dua di antaranya:
cat file[25].txt
Untuk angka yang lebih besar dari 9, ekspansi brace akan berguna (tetapi lihat catatan di bawah untuk perbedaan antara pola globbing dan ekspansi brace):
cat file{25..60}.txt
Sekali lagi, ekspansi brace memungkinkan untuk nomor individual juga:
cat file{12,45,900,xyz}.txt
(perhatikan bahwa dalam contoh di atas, ekspansi brace tidak melibatkan loop aritmatika, tetapi hanya menghasilkan nama berdasarkan string yang disediakan).
Di bash
, dengan extglob
opsi shell diaktifkan ( shopt -s extglob
), yang berikut ini juga akan berfungsi:
cat file@(12|45|490|foo).txt
The @(...)
Pola akan cocok salah satu dari termasuk |
pola -delimited.
Perbedaan antara pola globbing sebagai [...]
dan @(...)
dan ekspansi brace, adalah bahwa ekspansi brace dihasilkan pada baris perintah dan mungkin tidak benar-benar cocok dengan nama yang ada di direktori saat ini. Pola globbing nama file akan cocok dengan nama, tetapi shell tidak akan mengeluh jika tidak semua nama ada. Jika tidak ada nama yang cocok, polanya akan tetap tidak berkembang, kecuali jika nullglob
opsi shell diatur, dalam hal ini polanya dihilangkan.
Contoh:
touch file1
ls file[0-9]
Di sini, hanya daftar file yang file1
akan ditampilkan.
Dengan ls file{0..9}
, ls
akan mengeluh tentang tidak menemukan file0
, file2
dll.
Dalam contoh berikut, perintah pertama hanya akan menyentuh nama yang sudah ada yang cocok dengan pola yang diberikan, sedangkan baris kedua akan membuat file yang belum ada:
touch file[0-9]
touch file{0..9}
file45.txt
. Ekspresi braket[...]
bekerja seperti dalam ekspresi reguler tetapi digunakan!
sebagai ganti^
untuk mengatakan "tidak dalam". Sebuah[...]
pola akan selalu cocok dengan satu karakter.{1,2}
juga tidak mematuhi POSIX ... mempelajari beberapa hal baru hari ini!grep
, menghasilkan URL untuk diteruskancurl
, dan sebagainya ... tetapi juga bisa membingungkan kepada orang-orang yang terbiasa bekerja dengan gumpalan.Sintaks yang digunakan adalah
file{1,2}
yang akan mengevaluasi kefile1
danfile2
.Seperti yang ditunjukkan oleh Inian di bawah ini ... akan lebih mudah dilakukan
touch file{1..9}
dalam contoh kasus ini ...Anda juga dapat menggunakan banyak ekspresi, seperti:
Ya, di atas akan membuat 234 (
9
kali26
) file.sumber
file{1,2}
sintaks ini juga mudah untuk file rename:mv some_very_long_filename.txt{,.bak}
Ya, Anda dapat menggunakan ekspansi brace di
bash
shell. Untuk hanya beberapa file lakukanfile{1..2}
saja atau samafile{1,2}
Atau jika Anda khawatir tentang file yang tidak ada dalam beberapa kasus, lakukan saja perulangan sederhana,
Atau jika hanya menggabungkan adalah satu-satunya operasi Anda pada file dan jika Anda tidak yakin file mana yang tidak dapat hadir pada suatu titik waktu, hanya
cat
mereka dan menekan kesalahan. Mengarahkan ulang kesalahan standar ke/dev/null
akan menekan kesalahan jika file tidak tersedia.atau gunakan ekspresi glob
file[15]
yang tidak mengeluh tentang kesalahan jika file tidak ditemukan.sumber
file{1,5}
sintaks koma adalah semua yang saya lewatkan!