Dans une s=E9rie de fichiers ayant la m=EAme extension,
p. ex. .txt, comment afficher ceux qui n'ont pas une=20
expression pr=E9cise :
p. ex. "background-color:#F3F781;"
Si j'ai bien compris la question : for FIC in <fichiers> do grep -l -q <expression> "$FIC" || echo "$FIC" done
grep -L <expression> <fichiers> plutôt.
Bernard Isambert
Si j'ai bien compris la question : for FIC in <fichiers> do grep -l -q <expression> "$FIC" || echo "$FIC" done -- Bernard. 20 ans d'utilisation de Debian. Comme le temps passe...
Si j'ai bien compris la question :
for FIC in <fichiers>
do
grep -l -q <expression> "$FIC" || echo "$FIC"
done
--
Bernard.
20 ans d'utilisation de Debian. Comme le temps passe...
Si j'ai bien compris la question : for FIC in <fichiers> do grep -l -q <expression> "$FIC" || echo "$FIC" done -- Bernard. 20 ans d'utilisation de Debian. Comme le temps passe...
hamster
Le 27/06/2017 à 13:48, Eric Degenetais a écrit :
Si les fichiers ne sont pas forcément au même niveau d'arborescence : find répertoire/racine/recherche -type f -name "*.txt" -exec grep expression {} ; -print
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 ?
Le 27/06/2017 à 13:48, Eric Degenetais a écrit :
Si les fichiers ne sont pas forcément au même niveau d'arborescence :
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 ?
Si les fichiers ne sont pas forcément au même niveau d'arborescence : find répertoire/racine/recherche -type f -name "*.txt" -exec grep expression {} ; -print
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 ?
Eric Degenetais
--f403045f54701e05740552f50b07 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, a écrit : On Tuesday 27 June 2017 10:50:47 Bernard Isambert wrote:
Si j'ai bien compris la question : for FIC in <fichiers> do grep -l -q <expression> "$FIC" || echo "$FIC" done
On Tuesday 27 June 2017 10:52:39 Erwan David wrote:
grep -L <expression> <fichiers> plutôt.
Les deux ci-dessus semblent bien marcher. Merci. Mais : On Tuesday 27 June 2017 13:48:35 Eric Degenetais wrote:
--f403045f54701e05740552f50b07 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, a écrit : On Tuesday 27 June 2017 10:50:47 Bernard Isambert wrote:
Si j'ai bien compris la question : for FIC in <fichiers> do grep -l -q <expression> "$FIC" || echo "$FIC" done
On Tuesday 27 June 2017 10:52:39 Erwan David wrote:
grep -L <expression> <fichiers> plutôt.
Les deux ci-dessus semblent bien marcher. Merci. Mais : On Tuesday 27 June 2017 13:48:35 Eric Degenetais wrote:
Merci. Ça fonctionne mais moins bien que les deux ci-dessous, car la commande affiche quand même quelques fichiers qui ont pourtant l'expression.
On 06/28/2017 06:55 PM, Eric Degenetais wrote:
Étrange, ça devrait fonctionner aussi. Et aider si les fichiers sont dispersés. Pas le temps de tester en détail mais il faudra que j'y revienne O_o
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
Le 28 juin 2017 10:44, <andre_debian@numericable.fr> a écrit :
On Tuesday 27 June 2017 20:14:49 Eric Degenetais wrote:
> find chemin/racine -type f -name "*.txt" -exec grep -v <expression> {} ; -print
Merci.
Ça fonctionne mais moins bien que les deux ci-dessous,
car la commande affiche quand même quelques fichiers qui
ont pourtant l'expression.
On 06/28/2017 06:55 PM, Eric Degenetais wrote:
Étrange, ça devrait fonctionner aussi. Et aider si les fichiers
sont dispersés. Pas le temps de tester en détail mais il faudra
que j'y revienne O_o
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 ?
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 <etienne.mollier@mailoo.org>
Merci. Ça fonctionne mais moins bien que les deux ci-dessous, car la commande affiche quand même quelques fichiers qui ont pourtant l'expression.
On 06/28/2017 06:55 PM, Eric Degenetais wrote:
Étrange, ça devrait fonctionner aussi. Et aider si les fichiers sont dispersés. Pas le temps de tester en détail mais il faudra que j'y revienne O_o
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
=c3
On 06/28/2017 08:09 PM, Étienne Mollier wrote:
La commande suivante pourrait-elle correspondre à vos attentes ? find chemin/racine/ -type f -name '*.txt' -not -exec grep -q <expression> '{}' ;
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
On 06/28/2017 08:09 PM, Étienne Mollier wrote:
La commande suivante pourrait-elle correspondre à vos attentes ?
La commande suivante pourrait-elle correspondre à vos attentes ? find chemin/racine/ -type f -name '*.txt' -not -exec grep -q <expression> '{}' ;
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