GNU/Linux >> Tutoriels Linux >  >> Linux

Grep Comment supprimer l'affichage d'un fichier non correspondant ?

J'essaie de trouver des fichiers contenant un mot spécifique en utilisant grep . Il y a beaucoup de fichiers dans le répertoire (> 500)

Commande je lance

$ grep 'delete' *

Sortie

validate_data_stage1:0
validate_data_stage2:0
validate_data_stage3:0
validate_data_stage4:0
validate_data_stage5:0
validate_input_stage1:0
validate_input_stage2:0
validate_input_stage3:0
validate_input_stage4:0
.... and hundred of such lines

Ce sont les fichiers qui ne contiennent pas la correspondance donnée. Je veux empêcher ces lignes de s'afficher sur stdout. Je connais -q switch, mais cela supprimerait la sortie complète, ce que je ne veux pas.

Comment faire ?

Réponse acceptée :

C'est le comportement présenté par grep -c .

Vous avez probablement un fichier dont le nom commence par - et contient un c caractère et vous utilisez GNU grep sans définir le POSIXLY_CORRECT variable d'environnement.

Utiliser :

grep -- delete *

ou mieux :

grep delete ./*

-- marque la fin des options afin que ce nom de fichier ne soit pas considéré comme une option (avec un grep POSIX, ce ne serait pas le cas puisque la non-option delete aurait marqué la fin des options), mais cela ne résoudrait pas le problème d'un fichier appelé - . Le grep delete ./* est plus robuste mais a l'inconvénient de sortir le ./ supplémentaire pour les fichiers correspondants (bien que cela puisse être considéré comme un bonus car cela aide à identifier les noms de fichiers contenant des caractères de nouvelle ligne).


Linux
  1. Comment afficher la coloration syntaxique sur un fichier ?

  2. Comment puis-je grep récursivement?

  3. Comment grep pour le contenu après le modèle?

  4. Comment grep \n dans le fichier

  5. Comment afficher la liste des processus en cours d'exécution Python ?

Comment déplacer un fichier sous Linux

Comment exclure dans Grep

Comment créer un fichier sous Linux

Comment trouver une chaîne dans un fichier sous Linux

Comment afficher les données d'un fichier texte sous Linux

Comment obtenir des lignes contenant une chaîne dans un fichier ?