He estado tratando de resolver 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 nombrados error_log
.
He leído sobre esto aquí , pero solo encontré un not
patrón de expresiones regulares.
Respuestas:
grep -v
es tu amigo:También echa un vistazo a lo relacionado
-L
(el complemento de-l
).fuente
-e
se puede usar la opción:grep -v -e 'negphrase1' -e 'negphrase2'
grep -v 'negphrase1|negphrase2|negphrase3'
-E
trabajos, es decirgrep -vE 'negphrase1|negphrase2|negphrase3'
grep "" /dev/null * | grep foo | grep -v bar | cut -d: -f1 | sort -u
( ¿ por qué el primer grep?, Siempre hay una manera :))También puede usar
awk
para estos fines, ya que le permite realizar verificaciones más complejas de una manera más clara:Líneas que no contienen
foo
:Líneas que no contienen
foo
nibar
:Líneas que no contienen ni
foo
tampocobar
que contienen ya seafoo2
obar2
:Y así.
fuente
En su caso, presumiblemente no desea usar grep, sino que agrega una cláusula negativa al comando find, por ejemplo
Si desea incluir comodines en el nombre, deberá escapar de ellos, por ejemplo, para excluir archivos con sufijo .log:
fuente