Ik heb geprobeerd de syntaxis voor dit commando te achterhalen:
grep ! error_log | find /home/foo/public_html/ -mmin -60
of
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
Ik moet alle bestanden zien die gewijzigd zijn, behalve die met de naam error_log
.
Ik heb er hier over gelezen, maar heb maar één niet
-regex patroon gevonden.
grep -v
is je vriend:
grep --help | grep invert
-v, --invert-match selecteert niet-overeenkomende regels
Bekijk ook de gerelateerde -L
(het complement van -l
).
-L, --files-without-match print alleen bestandsnamen die geen overeenkomst bevatten
Je kunt awk
ook voor deze doeleinden gebruiken, omdat het je in staat stelt om complexere controles op een duidelijker manier uit te voeren:
Regels die foo
niet bevatten:
awk '!/foo/'
Regels die noch foo
noch bar
bevatten:
awk '!/foo/ && !/bar/'
Regels die noch foo
noch bar
bevatten en die foo2
of bar2
bevatten:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
En zo verder.
In uw geval wilt u vermoedelijk grep niet gebruiken, maar in plaats daarvan een negatieve clausule toevoegen aan het commando find, bijv.
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
Als u jokertekens in de naam wilt opnemen, zult u'ze moeten escapen, bijv. om bestanden met suffix .log uit te sluiten:
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log