私はこのコマンドの構文を考え出そうとしています:
grep ! error_log | find /home/foo/public_html/ -mmin -60
または
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
error_log
という名前を除いて、変更されたすべてのファイルを見る必要があります。
ここで読みました 、しかしnot
-regexパターンは1つしか見つかりませんでした。
grep -v
はあなたの友達です:
grep --help | grep invert
-v、--invert-match不一致行を選択する
関連する-L
(-l
の補足)も調べてください。
-L、 - files-without-matchは、一致しないファイル名のみを出力します。
これらの目的にawk
を使用することもできます。これは、より複雑なチェックをより明確な方法で実行できるからです。
foo
を含まない行:
awk '!/foo/'
foo
もbar
も含まない行
awk '!/foo/ && !/bar/'
foo2
またはbar2
を含むfoo
もbar
も含まない行:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
等々。
あなたの場合は、おそらくgrepを使用したくないでしょうが、代わりにfindコマンドに負の句を追加してください。
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
名前にワイルドカードを含める場合は、それらをエスケープする必要があります。拡張子が.logのファイルを除外するには
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log