Estoy tratando de hacer coincidir los nombres de archivo para una cárcel de fail2ban, por lo que necesito usar solo la globalización de nombres de archivo, no expresiones regulares o secuencias de comandos bash.
Mi /var/log/apache2directorio contiene archivos que incluyen:
example.com.error.log
db.example.com.error.log
app1.example.com.error.log
app2.example.com.error.log
Estoy tratando de crear un globo para que coincida con todos los archivos que terminan en .error.log excepto db.example.error.log , ¿es esto posible?
Lo he intentado !(db)*.error.logpero esto todavía coincide db.example.com.error.log. Supongo que !()no coincide con ningún carácter, lo que permite *que coincida desde el comienzo del nombre del archivo.
Nota: No quiero tener que extender el glob cuando appXse agregan nuevos archivos de registro, por lo que no puedo usar @()con la lista de nombres de archivos no db conocidos actualmente.
(Antecedentes: quiero crear un filtro que prohíba a cualquiera que solicite URL de phpMyAdmin en cualquier dominio, excepto db.example.com)
fuente
