GNU/Linux >> Znalost Linux >  >> Linux

Grep Jak potlačit zobrazení neshodného souboru?

Snažím se najít soubory obsahující konkrétní slovo pomocí grep . V adresáři je mnoho souborů (> 500)

Příkaz I run

$ grep 'delete' *

Výstup

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

Toto jsou soubory, které neobsahují danou shodu. Chci potlačit zobrazování těchto řádků na stdout. Znám -q přepínač, ale to by potlačilo celý výstup, což nechci.

Jak to udělám?

Přijatá odpověď:

To je chování, které vykazuje grep -c .

Pravděpodobně máte soubor, jehož název začíná - a obsahuje c a používáte GNU grep bez nastavení POSIXLY_CORRECT proměnná prostředí.

Použijte:

grep -- delete *

nebo lépe:

grep delete ./*

-- označí konec možností, takže název souboru nebude považován za možnost (s GREP POSIX by tomu tak nebylo, protože nevolba delete argument by znamenal konec možností), ale neřešil by problém souboru s názvem - . grep delete ./* je robustnější, ale má nevýhodu v tom, že na výstupu je navíc ./ pro shodu souborů (ačkoli to může být považováno za bonus, protože to pomáhá identifikovat názvy souborů, které obsahují znaky nového řádku).


Linux
  1. Jak zobrazit zvýraznění syntaxe v souboru?

  2. Jak mohu vyhledat víceřádkový vzor v souboru?

  3. Jak mohu grep rekurzivně?

  1. Jak 'grep' nepřetržitý proud?

  2. Jak hledat obsah po vzoru?

  3. Jak obnovit odstraněný soubor pod Linuxem?

  1. Jak grep \nv souboru

  2. Jak potlačit výsledky shody binárních souborů v grep

  3. Jak zobrazit seznam běžících procesů Python?