Saya telah mencoba untuk bekerja di luar sintaks untuk perintah ini:
grep ! error_log | find /home/foo/public_html/ -mmin -60
atau
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
Saya perlu untuk melihat semua file yang telah dimodifikasi kecuali bagi mereka bernama error_log
.
I'telah membaca tentang hal itu di sini, tetapi hanya ditemukan satu tidak
-pola regex.
grep -v
adalah teman anda:
grep --help | grep invert
-v, --invert-pertandingan pilih non-matching baris
Juga memeriksa terkait -L
(komplemen dari -l
).
-L, --file-tanpa-pertandingan hanya mencetak nama FILE yang tidak mengandung pertandingan
Anda juga dapat menggunakan awk
untuk tujuan ini, karena hal ini memungkinkan anda untuk melakukan lebih kompleks cek di cara yang lebih jelas:
Garis-garis yang tidak mengandung foo
:
awk '!/foo/'
Baris yang mengandung baik foo
atau bar
:
awk '!/foo/ && !/bar/'
Baris yang mengandung baik foo
atau bar
yang berisi foo2
atau bar2
:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
Dan sebagainya.
Dalam kasus anda, anda mungkin don't ingin menggunakan grep, tetapi menambahkan bukan negatif klausul untuk menemukan perintah, misalnya
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
Jika anda ingin memiliki wildcard dalam nama, anda'll harus melarikan diri mereka, misalnya untuk mengecualikan file dengan akhiran .log:
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log