Próbowałem wypracować składnię tego polecenia:
grep ! error_log | find /home/foo/public_html/ -mmin -60
LUB:
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
Muszę zobaczyć wszystkie pliki, które zostały zmodyfikowane, z wyjątkiem tych o nazwach error_log
.
Przeczytałem o tym tutaj , ale znalazłem tylko jeden not
wzór wyrażenia regularnego.
Odpowiedzi:
grep -v
jest twoim przyjacielem:Zobacz także powiązane
-L
(uzupełnienie-l
).źródło
-e
można użyć opcji:grep -v -e 'negphrase1' -e 'negphrase2'
grep -v 'negphrase1|negphrase2|negphrase3'
-E
utworów, tj.grep -vE 'negphrase1|negphrase2|negphrase3'
grep "" /dev/null * | grep foo | grep -v bar | cut -d: -f1 | sort -u
( dlaczego pierwszy grep? Zawsze istnieje sposób :))Możesz również użyć
awk
do tych celów, ponieważ pozwala to na przeprowadzanie bardziej złożonych kontroli w bardziej przejrzysty sposób:Linie niezawierające
foo
:Linie nie zawierające
foo
anibar
:Linie zawierające ani
foo
anibar
które zawierają albofoo2
albobar2
:I tak dalej.
źródło
W twoim przypadku prawdopodobnie nie chcesz używać grep, ale zamiast tego dodaj komendę negatywną do polecenia find, np
Jeśli chcesz dołączyć znaki wieloznaczne do nazwy, musisz je uciec, np. Aby wykluczyć pliki z sufiksem .log:
źródło