=?iso-8859-15?q?D=E9tecter_fichiers_qui_n=27ont_pas_une?= expression
Le
andre_debian

Bonjour,
Dans une série de fichiers ayant la même extension,
p. ex. .txt, comment afficher ceux qui n'ont pas une
expression précise :
p. ex. "background-color:#F3F781;"
Merci d'avance,
André
Dans une série de fichiers ayant la même extension,
p. ex. .txt, comment afficher ceux qui n'ont pas une
expression précise :
p. ex. "background-color:#F3F781;"
Merci d'avance,
André
grep -L <expression> <fichiers>
plutôt.
for FIC in <fichiers>
do
grep -l -q <expression> "$FIC" || echo "$FIC"
done
--
Bernard.
20 ans d'utilisation de Debian. Comme le temps passe...
Pour avoir les fichiers qui n'ont PAS une certaine expression, j'aurais
plutot mis grep -v dans ta formule. Et peut etre aussi un ; apres le print
Mais il y a un point que j'ai pas compris : est-ce qu'il faut des
fichiers qui n'ont pas une expression dans leur nom, ou bien dans le
corps du fichier ?
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Effectivement, mille excuses c'est une étourderie, il faut ajouter -v au
grep :
find chemin/racine -type f -name "*.txt" -exec grep -v <expression> {} ;
-print
Cordialement
Éric Dégenètais
Le 27 juin 2017 7:01 PM, On Tuesday 27 June 2017 10:50:47 Bernard Isambert wrote:
On Tuesday 27 June 2017 10:52:39 Erwan David wrote:
Les deux ci-dessus semblent bien marcher.
Merci.
Mais :
On Tuesday 27 June 2017 13:48:35 Eric Degenetais wrote:
affichent ceux qui ont l'expression... :-)
André
--f403045f54701e05740552f50b07
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
> Si j'ai bien compris la question :<br>
> for FIC in <fichiers><br>
> do<br>
> grep -l -q <expression> "$FIC" || echo "$FIC" ;<br>
> done<br>
<br>
</div><div class="quoted-text">On Tuesday 27 June 2017 10:52:39 Erwan Dav id wrote:<br>
> grep -L <expression> <fichiers> plutôt.<b r>
<br>
Merci.<br>
<br>
Mais :<br>
<div class="quoted-text">On Tuesday 27 June 2017 13:48:35 Eric Degenetais wrote:<br>
> find répertoire/racine/recherche -type f -name "*.txt" -exec grep<br>
> expression {} ; -print<br>
<br>
<br>
André<br>
<br>
<br>
</div><br></div></div></div>
--f403045f54701e05740552f50b07--
On 06/28/2017 06:55 PM, Eric Degenetais wrote:
Bonjour,
Si j'ai bien compris le principe, la logique semble pêcher dans
la négation de la correspondance. Avec la proposition ci-dessus,
l'assertion suivante est vraie alors qu'apparemment, on la
préférerait fausse :
Si le fichier contient au moins une ligne dans laquelle
l'expression n'est pas présente,
alors afficher le fichier.
La commande suivante pourrait-elle correspondre à vos attentes ?
find chemin/racine/ -type f -name '*.txt' -not -exec grep -q <expression> '{}' ;
Le `-v` du `grep` est enlevé et est remplacé par l'option `-not`
de la commande `find` pour indiquer que la commande passée au
`-exec` doit terminer en erreur pour que le fichier corresponde à
la recherche. L'option `-q` est simplement là pour signaler à
`grep` de ne pas afficher les correspondances qu'il trouve, ça
donnera au passage une sortie d'écran un peu plus lisible.
À plus,
--
Étienne Mollier
Erratum, le `-print` à sauté à la fin de la commande. Il faut lire :
find chemin/racine/ -type f -name '*.txt' -not -exec grep -q <expression> '{}' ; -print
--
Étienne Mollier