<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Denna fråga har redan svar här :

Svar

Precis som -L söker efter innehåll i en fil utan matchning, -l söker efter innehållet i en fil med en matchning.

Så du måste ange -l -flaggan i den andra ”grepping”.

Dessutom måste du rikta utdata från den första grep till den andra som kommandoradsargument. Detta kan göras med xargs, som är ett verktyg för att läsa objekt från standardingången. Att pipa filnamnen direkt skulle få andra grep att leta efter strängen authenticate i filen namn .

så att du bör hamna med något som

grep -r --color -L "class public interface" * | xargs grep -l "authenticate"` 

Observera att xargs som standard delar in ingången i valfritt utrymme, så om du har filnamn med mellanslag (eller värre) måste du använda grep -Z och xargs -0 för att filnamnen ska separeras av NUL-byte istället. ( I GNU grep, det vill säga. Andra kan vara olika, t.ex. FreeBSD grep har --null istället.)

Kommentarer

  • kan lägga till förslag om att använda grep -rLZ .. | xargs -0 .. för att undvika problem på grund av filnamn

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *