Her iki dosya adı ve satır numarası find… -exec grep ile nasıl döndürülür?


45

Kullanırken find, bir dize ararken dosya adını ve satır numarasını nasıl döndürürüm? Dosya adını bir komutta ve satır numaralarını bir başkasıyla döndürmeyi başardım, ancak bunları bir araya getiremiyorum.

Dosya isimleri: find . -type f -exec grep -l 'string to search' {} \;

Satır numaraları: find . -type f -exec grep -n 'string to search' {} \;

Yanıtlar:


51

Komut satırı anahtarı , yalnızca bir dosyayla bile dosya adını yazdırmaya -Hzorlar grep.

% grep -n 7 test.in
7:7
% grep -Hn 7 test.in
test.in:7:7

   -H, --with-filename
          Print the filename for each match.

Kojiro'nun bir yorumda dediği gibi , bunun POSIX standardının bir parçası olmadığını unutmayın; hem GNU hem de BSD grep'tedir, ancak bazı sistemler buna sahip değildir (örneğin Solaris).


4
Bu cevap işaret ederek geliştirilebilir -Hiçin bayrak grepbir olan standart dışı GNU uzantısı olan ve olmayan GNU sistemleri için alternatif bir yaklaşım poz.
kojiro


-1

Eğer grepiniz özyinelemeli -rbayrağı destekliyorsa , bu isteğinizi çözer:

grep -rn "String to search " * 

1
Bu doğru, ancak bunun mevcut cevaplara ne kattığını göremiyorum.
Wildcard

Geçerli dizinde yalnızca bir (nokta olmayan) dosya varsa, bu dosyanın adını göstermez.
G-Man,
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.