J'ai essayé de trouver la syntaxe de 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 sauf ceux nommés error_log
.
[Je l'ai lu ici] (http://www.robelle.com/smugbook/regexpr.html), 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 les lignes non correspondantes
Consultez également le -L
connexe (le complément de -l
).
-L, --files-without-match imprime uniquement les noms de FICHIERS ne contenant aucune correspondance
Vous pouvez également utiliser awk
à ces fins, puisqu'il vous permet d'effectuer des vérifications plus complexes d'une manière plus claire :
Les lignes ne contenant pas foo
:
awk '!/foo/'
Lignes ne contenant ni foo
ni bar
:
awk '!/foo/ && !/bar/'
Lignes ne contenant ni foo
ni bar
et contenant soit foo2
soit bar2
:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
Et ainsi de suite.
Dans votre cas, vous ne voulez probablement pas utiliser grep, mais ajouter à la place une clause négative à la commande find, par ex.
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
Si vous voulez inclure des caractères génériques dans le nom, vous devrez les échapper, par exemple pour exclure les fichiers avec le suffixe .log :
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log