He estado tratando de averiguar la sintaxis de este comando:
grep ! error_log | find /home/foo/public_html/ -mmin -60
o
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
Necesito ver todos los archivos que han sido modificados excepto los llamados error_log
.
(http://www.robelle.com/smugbook/regexpr.html), pero sólo he encontrado un patrón not
-regex.
grep -v
es tu amigo:
grep --help | grep invert
-v, --invert-match selecciona las líneas no coincidentes
También puedes ver el complemento -L
(el complemento de -l
).
-L, --files-without-match sólo imprime los nombres de los ARCHIVOS que no contienen ninguna coincidencia
También puede utilizar awk
para estos fines, ya que le permite realizar comprobaciones más complejas de forma más clara:
Líneas que no contienen foo
:
awk '!/foo/'
Líneas que no contienen ni foo
ni bar
:
awk '!/foo/ && !/bar/'
Líneas que no contienen ni foo
ni bar
y que contienen foo2
o bar2
:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
Y así sucesivamente.
En su caso, es de suponer que no quiere utilizar grep, sino añadir una cláusula negativa al comando find, por ejemplo
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
Si quieres incluir comodines en el nombre, tendrás que escaparlos, por ejemplo, para excluir archivos con el sufijo .log:
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log