J'ai essayé de trouver la syntaxe pour cette commande:
grep ! error_log | find /home/foo/public_html/ -mmin -60
ou
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
J'ai besoin de voir tous les fichiers qui ont été modifiés à l'exception de ceux nommés error_log
.
J'ai lu à ce sujet ici , mais je n'ai trouvé qu'un seul motif not
- regex.
grep -v
est votre ami:
grep --help | grep invert
-v, --invert-match sélectionne des lignes non concordantes
Consultez également le code -L
associé (le complément de -l
).
-L, --files-without-match n'indique que les noms de fichier ne contenant aucune correspondance
Vous pouvez également utiliser awk
à ces fins, car cela vous permet d'effectuer des vérifications plus complexes de manière plus claire:
Lignes ne contenant pas foo
:
awk '!/foo/'
Lignes ne contenant ni foo
ni bar
:
awk '!/foo/ && !/bar/'
Lignes ne contenant ni foo
ni bar
qui contiennent soit foo2
, soit bar2
:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
Etc.
Dans votre cas, vous ne voulez probablement pas utiliser grep, mais ajoutez plutôt une clause négative à la commande find, par exemple.
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
Si vous souhaitez inclure des caractères génériques dans le nom, vous devrez les échapper, par exemple. pour exclure des fichiers avec le suffixe .log:
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log