grep, herhangi bir satırın belirli bir düzenli ifadeyle eşleşip eşleşmediğini görmek için bir dosya içinde arama yapmak için kullanılır. Ancak benim şöyle bir durumum var - dosya adının kendisiyle eşleşecek (dosyanın içeriğiyle değil) bir düzenli ifade yazmak istiyorum. Düzenli ifadeyle eşleşen tüm dosyaları bulmak için bunu sistem'in kök dizininden çalıştıracağım.
Örneğin, "f" ile başlayan ve .frm ile biten tüm VB form dosyalarını bulmak istersem, şu düzenli ifadeyi kullanırım
"f[[:alnum:]]*\.frm"
Grep bunu yapabilir mi? Eğer yapamıyorsa, bunu yapmama izin verecek bir yardımcı program var mı? Teşekkürler.
Pablo'nun dediği gibi, grep
yerine find
kullanmanız gerekir, ancak find
ile grep
arasında bir boru hattı oluşturmanıza gerek yoktur. find` içinde bu işlevselliğe sahiptir:
find . -regex 'f[[:alnum:]]\.frm'
find`, dosyaları ada göre aramak için çok güçlü bir programdır ve dosya türüne göre aramayı, derinlik sınırlamasını, farklı arama terimlerini boole işlemleriyle birleştirmeyi ve bulunan dosyalar üzerinde rastgele komutlar çalıştırmayı destekler. Daha fazla bilgi için find man page adresine bakınız.
find -iname "file_name"
Syntax :-
find -type type_descriptor file_name_here
type_descriptor türleri:-
f: normal dosya
d: dizin
l: sembolik bağlantı
c: karakter aygıtları
b: blok cihazlar