Belirli Kriterlerle Eşleşen Dosyalarda grep Kullanımı


Grep (global normal ifade yazdırma) komutu, düzenli ifadelerdeki belirli modeli eşleştirir ve arar. Bu komut, belirli bir karakter modelini filtreler, arar ve bunları çıktı olarak görüntüler. Sistem yöneticileri ve geliştiriciler için Unix/Linux benzeri sistemlerde en kullanışlı komutlardan biri olarak kabul edilir.

Linux, her görevi basitleştirmek için çeşitli türde komutlar ve yardımcı programlar içerir. Diğer işletim sistemlerinden farklı olarak Linux'ta herhangi bir dosyayı bulmak basittir çünkü herhangi bir dosyayı aramak için grep komutunu kullanabilirsiniz.

Aradığınız belirli bir modeli içeren belirli dosyanın adını görüntülemek için grep komutunu kullanabilirsiniz. Ancak Linux'ta grep komutunu kullanırken takip etmeniz gereken birkaç şey var;

  • Grep, varsayılan olarak büyük/küçük harfe duyarlı bir komuttur. Bu nedenle, büyük/küçük harfe duyarlı olmayan desenle eşleştirmek için -i seçeneğini kullanmalısınız.

  • Kabuk için özel anlamı olan bir karakteri aramak için grep komutunda tırnak işaretleri kullanmalısınız.

  • Grep komutu, belirli bir karakteri içeren satırın tamamını görüntüler. Yani -o seçeneğini yalnızca dosyanın adını ve aranan karakteri görüntülemek için kullanmanız gerekir.

Bu kısa kılavuzda, Linux'ta belirli kriterlere uyan dosyalar üzerinde grep kullanacağız.

Linux'ta Belirli Kriterlerle Eşleşen Dosyalarda Grep Kullanımı

Grep komutu çoğu Linux dağıtımında önceden yüklenmiştir. 'Belgeler' dizininde bazı örnek dosyalar oluşturalım ve bu dosyalardaki bir dize veya normal ifadeyle eşleştirelim.

~$: sudo tree Documents 
Documents
|__ sample1
|__ sample2
|__ sample3

0 directories, 3 files

Şimdi bu örnek dosyaları Linux'ta grep komutunun farklı seçenekleri üzerinden arayacağız.

Dosyalarda Büyük/Küçük Harfe Duyarlı Aramayı Eşleştirme

Dosyalarda grep kullanarak tam kelimeleri ve kalıpları bulmanız gerekiyorsa, büyük/küçük harfe duyarlı arama kapsamına girer.

grep <pattern> <filename1> <filename2>.....

Burada Belgeler dizinindeki tüm dosyalar arasında "unix" kelimesini arayacağız.

Bunun için aşağıdaki komutu kullanın –

~$: grep unix sample1 sample2 sample3
sample1:unix
sample3:unix operating system

Yukarıdaki komut bahsedilen kalıpla eşleşir ve "unix" içeren dosyaları görüntüler.

Dosyalarda Büyük/Küçük Harfe Duyarsız Aramayı Eşleştirme

Yukarıdaki komutla -i seçeneğini kullanarak herhangi bir deseni duyarsız bir şekilde arayabilirsiniz –

grep -i <pattern> <filename1> <filename2>.....

'Unix' ile ilgili tüm sonuçları görüntüleyelim, ancak terminal 'Unix' veya 'unix' içeren tüm dosyaları gösterecektir.

~$: grep -i "unix" sample1 sample2 sample3
sample1:unix
sample1:Unix
sample2:Unix
sample3:unix operating system

Sadece Eşleşen Deseni Arama

Grep komutu varsayılan olarak paragrafın veya satırın tamamını görüntüler. Grep komutuyla -o seçeneğini kullanarak pasajın veya satırın tamamı yerine yalnızca deseni gösterebilirsiniz.

grep -o "<pattern>" <filename>

Burada grep komutu ve onun -o seçeneği aracılığıyla "Linux"u arayacağız -

~$: grep -o "Linux" sample1 sample3
sample1:Linux

Desenle Eşleşen Dosya Adlarını Arama

Belirli bir desen veya dize içeren dosyaları aramak istiyorsanız aşağıdaki komutu kullanın:

grep -l "<pattern>" <filename1> <filename2>.....

Veya,

grep -l "<pattern>" *

Örneğin, aşağıdaki komut "linux" kelimesini içeren geçerli dizindeki dosyanın adını gösterecektir –

~$: grep -l "linux" *
sample1
sample3

Herhangi Bir Desenle Eşleşme

Dosyalardaki herhangi bir sözcük, desen vb. ile eşleşen belirli karakterleri görüntülemek için aşağıdaki grep komutunu kullanın.

grep "..<letter_pattern>" <filename>

Burada, aşağıdaki komut hem 'Linux' hem de 'x' ile biten 'Unix' kalıplarını gösterir.

~$: grep "..x" sample1 sample3
sample2:Linux
sample2:Linux
sample2:Unix
sample3:linux
sample3:unix operating system.

Ters Çevirme Desenini Eşleştirme

Yalnızca belirtilen desene benzemeyen çizgileri eşleştirebilirsiniz. Bu durumda grep komutuyla -v seçeneğini aşağıdaki gibi kullanabilirsiniz –

grep -v "<pattern>" <filename>

Örneğin "Linux" kelimesini içermeyen dosyaları arayacağız.

~$: grep -v "Linux" sample1 sample2 sample3
sample1:GNU operating system
sample1:gnu
sample1:Gnu
sample:unix
sample1:linux
sample1:unix
sample2:GNU
sample2:unix
sample3:linux
sample3:unix operating system.
sample3:gnu operating system.

Belirli Bir Kelime/Dizi ile Başlayan Deseni Eşleştirme

Düzenli ifade modeli '^' bir pasajın veya satırın başlangıcını tanımlar. Aşağıdaki grep komutunu kullanarak belirli bir desen veya dizeyle başlayan satırları görüntüleyebilirsiniz.

grep "^<pattern>" <filename>

Aşağıdaki komutta, dosyalarda "gnu"yu aramak için grep komutunu kullanacağız –

~$: grep "^gnu" sample2 sample3
sample3:gnu operating system.

Belirli Bir Kelime/Dizi ile Biten Kalıbı Eşleştirme

'$' düzenli ifade modeli bir pasajın/satırın sonunu tanımlar. Bu ifadeyi grep komutuyla kullanarak, söz konusu kalıp/kelime ile biten satır veya pasajları eşleştirebilirsiniz.

grep "<pattern>$" <filename>

Örneğin, birden fazla dosyada "sistem" kelimesini arayacağız -

~$: grep "system$" sample1 sample2 sample3
sample3:unix operating system.
sample3:gnu operating system.

Dizindeki Bir Model İçin Yinelemeli Eşleştirme

Dizindeki belirli dosyalar yerine dizinin tamamındaki bir modeli eşleştirmek istiyorsanız, grep komutuyla -R seçeneğini şu şekilde kullanabilirsiniz:

grep -R <pattern> <directory>

Şimdi, Belgeler dizininde "GNU" içeren dosyaları bulmak için grep komutunu yinelemeli olarak çalıştıracağız -

~$: grep -R GNU Documents
Documents/sample2:GNU
Documents/sample1:GNU operating system

Bonus İpucu − Geçerli dizinde bulunan tüm dosyalar arasında belirli bir modeli eşleştirmek istiyorsanız, bunu grep komutuyla birlikte -w seçeneğini kullanarak aşağıdaki gibi yapabilirsiniz −

grep -w <pattern> *

Dosyaları Belirli Uzantılarla Eşleştirme

Bir dizinde bulunan belirli bir uzantıya sahip dosyalarda bir model aramak için aşağıdaki komutu kullanın

grep -R --include=*.<file_extention> '<pattern>' <directory>

Aşağıdaki örnekte grep komutu sadece '.txt' uzantılı dosyalarda belirtilen deseni kontrol etmektedir.

~$: grep -R --include=*.txt 'Linux' Documents
Documents/sample1.txt:Linux is a kernel

Not − Yukarıdaki komutu aynı anda birden fazla uzantıya sahip dosyalardaki kalıpları eşleştirmek için de kullanabilirsiniz.

Çözüm

grep komutu, Linux'taki terminal aracılığıyla belirli kalıplara sahip dosyaları filtrelemenin mükemmel bir yoludur. Bu rehberimizde dosyalarda belirli kriterleri eşleştirmenin yollarını çeşitli örneklerle anlattık. grep komutunu kullanmak çok kolaydır ve bunu yukarıdaki örneklerden bazılarında da görebilirsiniz. Böylece grep komutunu Linux'ta herhangi bir desen, çizgi, kelime vb.'yi yalnızca birkaç tıklamayla aramak için kullanabilirsiniz.

İlgili makaleler: