Hur man hittar alla filer som innehåller specifik text (sträng) på Linux

Hur man hittar alla filer som innehåller specifik text (sträng) på Linux

Anta att du letar efter en fil i Linux, men du har glömt dess namn. Du kommer bara ihåg innehållet i filen. Hur hittar du filen i det här fallet? Tja, det finns några användbara metoder som hjälper dig att hitta en fil som innehåller en specifik text (eller sträng) i Linux. Strängen måste specificeras av användaren. Så låt oss ta en titt på metoderna:

Metoder för att hitta alla filer som innehåller specifik text (sträng) på Linux

Metod 1: grep kommando

grep kommando i Linux som används för att söka efter filer som innehåller en specifik text eller sträng. Som standard visar den oss raderna i filerna som innehåller den specifika texten. Om vi ​​lägger till alternativet -l till det, kommer kommandot att visa oss alla filer som innehåller den specifika texten.

Exempel:

Anta att vi har en katalog som innehåller två filer som heter file1.txt och file2.txt.

Innehållet i fil1.txt:

This line contains text. 

Innehållet i fil2.txt:

You should learn Data Structures & Algorithms. 

Nu kommer vi att använda kommandot grep med alternativet -l för att söka efter text i givna filer som finns i den aktuella katalogen. Se följande exempel:

Det kan tydligt sägas från exemplet ovan att grep-kommandot framgångsrikt har hittat den givna strängen i file1.txt. Som ett resultat visade den filnamnet på skärmen.

Vi kan också använda alternativet -i för att säga åt grep att ignorera fallet. Titta på följande exempel:

Ovan har vi först använt det föregående kommandot, men den givna strängen är Text. Eftersom fil1.txt innehåller text, inte text, tas den inte i beaktande. Här utförs sökoperationen med fallet i åtanke. Sedan använde vi alternativet -i. Som ett resultat ignoreras fallet och den givna strängen matchar den som file1.txt innehåller. Därför visas filnamnet på skärmen.

En annan variant är att använda alternativet -r. Det föreslår att grep ska söka efter den givna strängen i den aktuella katalogen och dess underkataloger rekursivt. Titta på exemplet nedan:

fil1.txt och fil2.txt finns i mappen filer, inte i den aktuella katalogen, dvs skrivbordet. Så, om vi inte använder alternativet -r, kommer inga filer med matchande strängar att hittas eftersom de inte finns i den aktuella katalogen. Men vi använde alternativet -r och utelämnade även filnamnen. Som ett resultat söker grep efter matchande strängar inte bara i den aktuella katalogen utan också i dess underkataloger. Därför hittas och visas file1.txt på skärmen.

Metod 2: Kombinationen av find och grep-kommandot

hitta är ett annat användbart kommando i Linux. Vi kommer att kombinera find med alternativet -type f för att söka efter filer och alternativet -exec för att tillämpa på grep på filerna som hittas. Titta på följande exempel:

Uppenbarligen hittar sökoperationen file1.txt eftersom den innehåller den matchande strängen. Därför visas filnamnet på skärmen.

Metod 3: Hitta filer som innehåller specifik text med mc

Vi kan också söka efter filer med Midnight Commander (mc). Öppna programmet och tryck Alt + Skift + ? för att öppna dialogrutan Sök fil. Du kommer att se en startruta överst. Skriv sökvägen där filerna finns i rutan. Skriv sedan strängen du vill söka under innehållsrutan. I vårt fall sökte vi efter text i filkatalogen:

Det kan tydligt ses nedan att sökoperationen har hittat fil1.txt, som innehåller den matchande strängen.

Metod 4: kommandot ripgrep

ripgrep (skrivet som rg) är ett kommando som kan användas som ett alternativ till kommandot grep. Implementeringen är nedan:

file1.txt hittas och därför visas filnamnet på skärmen.

Metod 5: ack-kommando

Ännu ett kommando vi kan använda är kommandot ack. Här är implementeringen:

file1.txt har hittats och visas på skärmen.