GNU/Linux >> Znalost Linux >  >> Linux

Jak najít všechny soubory, které neobsahují textový řetězec?

Jak stručné mohu použít k nalezení všech souborů, které NEobsahují textový řetězec?

Zkoušel jsem to (pomocí -v k invertování parametrů grepu) bez úspěchu:

find . -exec grep -v -l shared.php {} ;

Někdo řekl, že to bude fungovat:

find . ! -exec grep -l shared.php {} ;

Ale zdá se, že to pro mě nefunguje.

Tato stránka má tento příklad:

find ./logs -size +1c  > t._tmp
while read filename
do
     grep -q "Process Complete" $filename
     if [ $? -ne 0 ] ; then
             echo $filename
     fi
done < t._tmp
rm -f t_tmp

Ale to je těžkopádné a vůbec ne stručné.

ps:Vím, že grep -L * to udělá, ale opravdu chci vědět, jak mohu použít příkaz find v kombinaci s grep k vyloučeným souborům.

pss:Také si nejsem jistý, jak zahrnout podadresáře grep s grep -L * syntaxi, ale přesto chci vědět, jak ji používat s find 🙂

Přijatá odpověď:

find . -type f | xargs grep -H -c 'shared.php' | grep 0$ | cut -d':' -f1    

NEBO

find . -type f -exec grep -H -c 'shared.php' {} ; | grep 0$ | cut -d':' -f1

Zde počítáme počet odpovídajících řádků (pomocí -c ) v souboru, pokud je počet 0, je to požadovaný soubor, takže z výstupu vyjmeme první sloupec, tj. název souboru.


Linux
  1. Jak najít všechny řídké soubory v Linuxu

  2. Jak najít textové soubory, které neobsahují text v Linuxu?

  3. Najděte všechny soubory s názvem obsahujícím řetězec

  1. Jak v Linuxu najdu všechny soubory obsahující konkrétní text?

  2. grep najít soubory, které obsahují řetězec delší než x znaků?

  3. Jak získat řádky, které obsahují řetězec v souboru?

  1. Jak používat příkaz Grep k vyhledání textu v souborech

  2. Jak najít více řetězců v souborech?

  3. Příkaz Linux:Jak „najít“ pouze textové soubory?