Mẫu tên tập tin tiêu chuẩn để khớp với một chữ số là [0-9]
. Điều này khớp với một chữ số:
cat file[0-9].txt
Để chỉ chọn hai trong số này:
cat file[25].txt
Đối với số lượng lớn hơn 9, mở rộng niềng răng sẽ hữu ích (nhưng xem lưu ý bên dưới để biết sự khác biệt giữa các mẫu hình cầu và mở rộng niềng răng):
cat file{25..60}.txt
Một lần nữa, mở rộng cú đúp cũng cho phép số lượng riêng lẻ:
cat file{12,45,900,xyz}.txt
(lưu ý rằng trong ví dụ trên, việc mở rộng dấu ngoặc không liên quan đến vòng lặp số học, mà chỉ tạo các tên dựa trên các chuỗi được cung cấp).
Trong bash
, với extglob
tùy chọn shell được bật ( shopt -s extglob
), các tùy chọn sau cũng sẽ hoạt động:
cat file@(12|45|490|foo).txt
Các @(...)
mẫu sẽ phù hợp với bất kỳ một trong những bao gồm |
mẫu -delimited.
Sự khác biệt giữa các mẫu hình cầu [...]
và @(...)
mở rộng dấu ngoặc, là việc mở rộng dấu ngoặc được tạo trên dòng lệnh và có thể không thực sự khớp với bất kỳ tên hiện có nào trong thư mục hiện tại. Một mẫu tên toàn cầu sẽ khớp với tên, nhưng shell sẽ không khiếu nại nếu không tồn tại tất cả tên có thể. Nếu không có tên phù hợp tồn tại, mẫu sẽ vẫn chưa được mở rộng, trừ khi nullglob
tùy chọn shell được đặt, trong trường hợp đó mẫu sẽ bị xóa.
Thí dụ:
touch file1
ls file[0-9]
Ở đây, chỉ có danh sách tập tin cho file1
sẽ được hiển thị.
Với ls file{0..9}
, ls
sẽ phàn nàn về việc không tìm thấy file0
, file2
vv
Trong ví dụ sau, lệnh đầu tiên sẽ chỉ chạm vào các tên hiện có khớp với mẫu đã cho, trong khi dòng thứ hai sẽ tạo các tệp chưa tồn tại:
touch file[0-9]
touch file{0..9}
file45.txt
. Biểu thức ngoặc[...]
hoạt động giống như trong biểu thức thông thường nhưng sử dụng!
thay^
cho cụm từ "không trong". Một[...]
mô hình sẽ luôn luôn phù hợp với một nhân vật duy nhất.