Bu komutun sözdizimini çözmeye çalışıyordum:
grep ! error_log | find /home/foo/public_html/ -mmin -60
veya
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
error_log` adlı dosyalar dışında değiştirilen tüm dosyaları görmem gerekiyor.
Burada okudum, ancak yalnızca bir not
-regex kalıbı buldum.
"grep -v" sizin arkadaşınızdır:
grep --help | grep invert
-v, --invert-match eşleşmeyen satırları seç
Ayrıca ilgili -L
(-l
nin tümleyeni) seçeneğine de göz atın.
-L, --files-without-match yalnızca eşleşme içermeyen DOSYA adlarını yazdırır
Bu amaçlar için awk
da kullanabilirsiniz, çünkü daha karmaşık kontrolleri daha net bir şekilde yapmanızı sağlar:
İçinde foo
bulunmayan satırlar:
awk '!/foo/'
Ne foo
ne de bar
içeren satırlar:
awk '!/foo/ && !/bar/'
Ne foo
ne de bar
içeren ve foo2
ya da bar2
içeren satırlar:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
Ve böyle devam eder.
Sizin durumunuzda, muhtemelen grep kullanmak istemezsiniz, bunun yerine find komutuna olumsuz bir cümle ekleyin, örn.
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
Joker karakterleri ada dahil etmek istiyorsanız, örneğin .log son ekine sahip dosyaları hariç tutmak için bunlardan kaçmanız gerekir:
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log