Önceki bir grep'ten döndürülen dosyalar üzerinde nasıl ikinci bir grep yapabilirim?


5

Aradığım şeyi bulmak için sık sık grep kullanarak bir sürü kod ararken kendimi buluyorum. Bazen umduğumdan biraz daha uzun bir dosya listesi alıyorum. Bu noktada ikinci bir grep yapmak istiyorum, ancak yalnızca ilk grep araması tarafından döndürülen dosyaları arayarak. Bunu yapmanın bir yolu var mı? Temelde iki grep araştırmasını çapraz referanslamak ve sadece her ikisinde de sonuç bulunan dosyaları geri almak istiyorum.

Yanıtlar:


9
grep -lZ "first string" * | xargs -0 grep -l "second string"
  • İlk grep içeren dosyaları döndürür first string.

  • İkinci grep aynısını yapacak second string, ancak ilk sonuçları grep.

  • -Z grep ve argüman -0 xargs argümanı, boşluk içeren dosya adlarına destek sağlamak için birlikte çalışır.


Düzenleme - sayesinde Ajedi32 :

xargs Bir komuttaki sonuçları diğerine argüman olarak kullanmanıza izin verir.

İtibaren xargs 'nin Wikipedia makalesi , xargs, Unix ve çoğu Unix benzeri işletim sistemlerinde bir komuttur ve standart girdilerden komut satırı oluşturmak ve yürütmek için kullanılır.


Harika. Teşekkürler. Beni neyin aydınlattığı hakkında xargs nedir?
Chev

2
@AlexFord - tarafından xarg 'nin Wikipedia makalesi , xargs, Unix ve çoğu Unix benzeri işletim sistemlerinde bir komuttur ve standart girdilerden komut satırları oluşturmak ve yürütmek için kullanılır. . Başka bir deyişle, bir komuttan gelen sonuçları standart girdi olarak diğerine kullanmanıza izin verir. Aynı komutları kullanmaya çalışın ancak xargsve sorunu göreceksiniz grep -l "first string" * | grep -l "second string" )
jimm-cl

1
@ntoskrnl - alacaksınız " (standard input) "mesaj. İyi bir açıklama Bu dan Joseph R.
jimm-cl

2
jim "sonuçları bir komuttan diğerine standart girdi olarak kullanabilmenizi sağlar" Hayır, boruların yaptığı budur. xargs sonuçları bir komuttan kullanmanıza olanak sağlar. argümanlar başka bir.
Ajedi32

1
@ Ajedi32 - haklısın - benim hatam. Cevap düzenlendi :-) Teşekkürler!
jimm-cl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.