Dosya adlarını yalnızca bir anahtar kelime grep aramasından sonra nasıl gösterebilirim?


15

Şu anda bir dizinde her dosyada çok uzun veri en fazla 1 satır n veri dosyaları var. Dizin yapım

director/
    data1.json
    data2.json
    data3.json

Bu dosyalardan en az birinin aradığım anahtar kelimeyi içerdiğini biliyorum, ancak bir veri satırı çok uzun olduğu için tüm terminalimi kapsıyor. Dosya adını yalnızca grep anahtar sözcüğünü gerçekleştirdikten sonra nasıl alabilirim? Kullandığım grep komutu:

grep keyword *.json

Yanıtlar:


30

-L argümanı istediğinizi yapmalıdır.

   -l, --files-with-matches
          Suppress  normal  output;  instead  print the name of each input
          file from which output would normally have  been  printed.   The
          scanning  will  stop  on  the  first match.  (-l is specified by
          POSIX.)

7

Xargs --null ile grep veya --print0 ile ack birlikte kullanılabilir. Ack hızının daha hızlı olduğunu düşünüyorum.

grep -lr --null searchterm * | xargs -I {} -0 echo {}

ack -lr --print0 searchterm * | xargs -I {} -0 echo {}

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.