Tôi đang cố gắng khớp tên tập tin cho một nhà tù fail2ban - vì vậy tôi chỉ cần sử dụng tên tập tin toàn cầu - không phải regexes hoặc bash scripting.
Thư mục của tôi /var/log/apache2
chứa các tệp bao gồm:
example.com.error.log
db.example.com.error.log
app1.example.com.error.log
app2.example.com.error.log
Tôi đang cố gắng tạo một quả địa cầu để khớp với tất cả các tệp kết thúc .error.log
ngoại trừ db.example.error.log
- điều này có khả thi không?
Tôi đã thử !(db)*.error.log
nhưng điều này vẫn phù hợp db.example.com.error.log
. Tôi đoán !()
là không khớp với các ký tự, cho phép *
khớp từ đầu tên tệp.
Lưu ý: Tôi không muốn phải mở rộng toàn cầu khi các appX
tệp logfile mới được thêm vào, vì vậy tôi không thể sử dụng @()
với danh sách tên tệp không phải là db hiện được biết đến.
(Nền: Tôi muốn tạo bộ lọc cấm bất kỳ ai yêu cầu bất kỳ URL phpMyAdmin nào trên bất kỳ tên miền nào ngoại trừ db.example.com)