Je retrouve de très vieux fichiers que je compilais avec « latex »
et que je veux faire plus propres et compilables avec « pdflatex ».
Je cherche donc à détecter tous les fichiers contenant la
chaîne « .eps ».
Pourquoi les commandes
« find ./ -name "*.tex" -exec grep -l .eps {} \; »
et
« find ./ -name "*.tex" -exec grep -l eps {} \; »
trouvent-elles les mêmes choses ?
Il me semble que le point de « .eps » n'est pas pris en compte et que
me sont dénoncés des fichiers contenant juste « eps » sans le point
(comme « varepsilon » par exemple).
Savez vous pourquoi, et comment corriger cela ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Doug713705
Le 2018-08-08, dadou nous expliquait dans fr.comp.os.linux.configuration (<pkep3n$jf0$) :
Bonsoir la foule, Je retrouve de très vieux fichiers que je compilais avec « latex » et que je veux faire plus propres et compilables avec « pdflatex ». Je cherche donc à détecter tous les fichiers contenant la chaîne « .eps ». Pourquoi les commandes « find ./ -name "*.tex" -exec grep -l .eps {} ; » et « find ./ -name "*.tex" -exec grep -l eps {} ; » trouvent-elles les mêmes choses ?
Parce que ton expression .eps est interprété comme une RegEx ? Le point faisant parti du motif et non pas de l'expression il faut donc l'échapper et mettre le motif entre quotes.
Il me semble que le point de « .eps » n'est pas pris en compte et que me sont dénoncés des fichiers contenant juste « eps » sans le point (comme « varepsilon » par exemple). Savez vous pourquoi, et comment corriger cela ?
find ./ -type f -name "*.tex" -exec grep -l ".eps" {} ; -- Et nous avions des gueules à briser les miroirs, À ne montrer nos yeux que dans le contre-jour, Mais entre deux délires, entre deux idées noires, Nous étions les plus beaux, nous vivions à rebours. -- H.F. Thiéfaine, Exil Sur planète fantôme
Le 2018-08-08, dadou nous expliquait dans
fr.comp.os.linux.configuration
(<pkep3n$jf0$1@dont-email.me>) :
Bonsoir la foule,
Je retrouve de très vieux fichiers que je compilais avec « latex »
et que je veux faire plus propres et compilables avec « pdflatex ».
Je cherche donc à détecter tous les fichiers contenant la
chaîne « .eps ».
Pourquoi les commandes
« find ./ -name "*.tex" -exec grep -l .eps {} ; »
et
« find ./ -name "*.tex" -exec grep -l eps {} ; »
trouvent-elles les mêmes choses ?
Parce que ton expression .eps est interprété comme une RegEx ?
Le point faisant parti du motif et non pas de l'expression il faut donc
l'échapper et mettre le motif entre quotes.
Il me semble que le point de « .eps » n'est pas pris en compte et que
me sont dénoncés des fichiers contenant juste « eps » sans le point
(comme « varepsilon » par exemple).
Savez vous pourquoi, et comment corriger cela ?
--
Et nous avions des gueules à briser les miroirs,
À ne montrer nos yeux que dans le contre-jour,
Mais entre deux délires, entre deux idées noires,
Nous étions les plus beaux, nous vivions à rebours.
-- H.F. Thiéfaine, Exil Sur planète fantôme
Le 2018-08-08, dadou nous expliquait dans fr.comp.os.linux.configuration (<pkep3n$jf0$) :
Bonsoir la foule, Je retrouve de très vieux fichiers que je compilais avec « latex » et que je veux faire plus propres et compilables avec « pdflatex ». Je cherche donc à détecter tous les fichiers contenant la chaîne « .eps ». Pourquoi les commandes « find ./ -name "*.tex" -exec grep -l .eps {} ; » et « find ./ -name "*.tex" -exec grep -l eps {} ; » trouvent-elles les mêmes choses ?
Parce que ton expression .eps est interprété comme une RegEx ? Le point faisant parti du motif et non pas de l'expression il faut donc l'échapper et mettre le motif entre quotes.
Il me semble que le point de « .eps » n'est pas pris en compte et que me sont dénoncés des fichiers contenant juste « eps » sans le point (comme « varepsilon » par exemple). Savez vous pourquoi, et comment corriger cela ?
find ./ -type f -name "*.tex" -exec grep -l ".eps" {} ; -- Et nous avions des gueules à briser les miroirs, À ne montrer nos yeux que dans le contre-jour, Mais entre deux délires, entre deux idées noires, Nous étions les plus beaux, nous vivions à rebours. -- H.F. Thiéfaine, Exil Sur planète fantôme
Nicolas George
dadou , dans le message <pkep3n$jf0$, a écrit :
Je retrouve de très vieux fichiers que je compilais avec « latex » et que je veux faire plus propres et compilables avec « pdflatex ». Je cherche donc à détecter tous les fichiers contenant la chaîne « .eps ». Pourquoi les commandes « find ./ -name "*.tex" -exec grep -l .eps {} ; » et « find ./ -name "*.tex" -exec grep -l eps {} ; » trouvent-elles les mêmes choses ?
Ce n'est pas le cas : si tu as « epsilon » quelque part dans le fichier, la seconde commande va le trouver, mais la première ne va le trouver que s'il n'est pas en début de ligne.
Il me semble que le point de « .eps » n'est pas pris en compte et que me sont dénoncés des fichiers contenant juste « eps » sans le point (comme « varepsilon » par exemple). Savez vous pourquoi, et comment corriger cela ?
Cherche « period » / « point » dans la page de man de grep. Puis cherche « backslash » et l'option -F. Et pendant que tu y es, regarde >.
dadou , dans le message <pkep3n$jf0$1@dont-email.me>, a écrit :
Je retrouve de très vieux fichiers que je compilais avec « latex »
et que je veux faire plus propres et compilables avec « pdflatex ».
Je cherche donc à détecter tous les fichiers contenant la
chaîne « .eps ».
Pourquoi les commandes
« find ./ -name "*.tex" -exec grep -l .eps {} ; »
et
« find ./ -name "*.tex" -exec grep -l eps {} ; »
trouvent-elles les mêmes choses ?
Ce n'est pas le cas : si tu as « epsilon » quelque part dans le fichier,
la seconde commande va le trouver, mais la première ne va le trouver que
s'il n'est pas en début de ligne.
Il me semble que le point de « .eps » n'est pas pris en compte et que
me sont dénoncés des fichiers contenant juste « eps » sans le point
(comme « varepsilon » par exemple).
Savez vous pourquoi, et comment corriger cela ?
Cherche « period » / « point » dans la page de man de grep.
Je retrouve de très vieux fichiers que je compilais avec « latex » et que je veux faire plus propres et compilables avec « pdflatex ». Je cherche donc à détecter tous les fichiers contenant la chaîne « .eps ». Pourquoi les commandes « find ./ -name "*.tex" -exec grep -l .eps {} ; » et « find ./ -name "*.tex" -exec grep -l eps {} ; » trouvent-elles les mêmes choses ?
Ce n'est pas le cas : si tu as « epsilon » quelque part dans le fichier, la seconde commande va le trouver, mais la première ne va le trouver que s'il n'est pas en début de ligne.
Il me semble que le point de « .eps » n'est pas pris en compte et que me sont dénoncés des fichiers contenant juste « eps » sans le point (comme « varepsilon » par exemple). Savez vous pourquoi, et comment corriger cela ?
Cherche « period » / « point » dans la page de man de grep. Puis cherche « backslash » et l'option -F. Et pendant que tu y es, regarde >.
Attention : un backslash seul dans des guillemets doubles est fragile. Je conseille, au choix : ".eps" '.eps'
Francois Lafont
Bonjour, On 08/08/2018 07:31 PM, Nicolas George wrote:
Attention : un backslash seul dans des guillemets doubles est fragile. Je conseille, au choix : ".eps" '.eps'
J'ajoute simplement à la remarque de Nicolas que grep possède l'option --fixed-strings (ou -F en version courte) qui permet à grep d'interpréter le motif comme une simple chaîne « brute » ou il n'y a plus de notion de regex. Par exemple : grep -F '.eps' f.txt va rechercher la chaîne « .eps » dans le fichier f.txt. Plus de regex, un caractère représente lui-même, un point c'est tout, et on n'a plus à se poser la question « faut-il échapper tel ou tel caractère ? ». À+ -- François Lafont
Bonjour,
On 08/08/2018 07:31 PM, Nicolas George wrote:
Attention : un backslash seul dans des guillemets doubles est fragile.
Je conseille, au choix :
"\.eps"
'.eps'
J'ajoute simplement à la remarque de Nicolas que grep possède l'option
--fixed-strings (ou -F en version courte) qui permet à grep d'interpréter
le motif comme une simple chaîne « brute » ou il n'y a plus de notion de
regex. Par exemple :
grep -F '.eps' f.txt
va rechercher la chaîne « .eps » dans le fichier f.txt. Plus de regex, un
caractère représente lui-même, un point c'est tout, et on n'a plus à se
poser la question « faut-il échapper tel ou tel caractère ? ».
Bonjour, On 08/08/2018 07:31 PM, Nicolas George wrote:
Attention : un backslash seul dans des guillemets doubles est fragile. Je conseille, au choix : ".eps" '.eps'
J'ajoute simplement à la remarque de Nicolas que grep possède l'option --fixed-strings (ou -F en version courte) qui permet à grep d'interpréter le motif comme une simple chaîne « brute » ou il n'y a plus de notion de regex. Par exemple : grep -F '.eps' f.txt va rechercher la chaîne « .eps » dans le fichier f.txt. Plus de regex, un caractère représente lui-même, un point c'est tout, et on n'a plus à se poser la question « faut-il échapper tel ou tel caractère ? ». À+ -- François Lafont