Ack ve grep'te maksimum derinlikte arama nasıl yapılır?


32

ackGeçerli klasörde sadece metin aramak için söylemenin herhangi bir yolu var mı ? (veya bir max-depthseviye belirtiniz ?) Ve grep?


1
Hayır, -nhiçbirinin tekrarlanmaması dışında bir derinlik maksimum seçeneği yoktur.
Andy Lester

Yanıtlar:


22

Kullanım -niçin no-recurse:

$ ack -n foo

grepvarsayılan olarak özyinelemeli değildir ve -rbayrak özyinelemeli arama yapmak istiyorsanız kullanmanız gerekir .

Geçerli dizini grepaşağıdaki gibi arayabilirsiniz :

$ grep -- foo *

13
Soruyu cevaplamıyor mu? (peki ya 2 derinliğe kadar tekrarlamak istersem)
Steven Lu

İyi nokta, bunu özledim. Baska öneri?
Eric Wilson

29

-Exec argümanı ile çift bulabilirsiniz. örnek:

find . -maxdepth 1 -exec grep foo {} \;

Bu ölçeklenebilir, yani -maxdepth 2


Stephane, cevabım ( -maxdepth 1) ölçeklenebilirdi. Örneğin -maxdepth 2. Yaptığınız düzenlemeyi nasıl tanımlayacağımı bilmiyorum.
David Wilkins,

@ kullanmazsanız, @stephane'ye ulaşmaz.
Braiam

4
Evet üzgünüm, düzenlememin çok müdahaleci olduğu konusunda hemfikiriz. Bunun ( -maxdepth) taşınabilir / standart sözdizimi olmadığını (sadece GNU ve bazı BSD'ler) açıklığa kavuşturmak isteyebilirsiniz . Ayrıca, burada kullanmanın bir anlamı yoktur \;( grepdosya başına bir tane çalıştırın ). Kullanım grep -H foo {} +(GNU özel) veya grep foo /dev/null {} +(standart) Dosyanın adı her zaman yazdırılır yapmak. -maxdepth 2find . -path './*/*' -type d -prune -o -type f -exec ...
Olması

2
Ayrıca , GNU ile birlikte dizin okumaya çalışmazken ( sizinkileri alır) dizininiz için ( sizin vermemeniz de dahil) hata mesajları .verecektir . Bir eklemek isteyebilirsiniz için (GNU grep varsayarak) ya da daha iyi eklemek için daha iyi ya da (ya GNU'yu varsayarak muhtemelen istemiyorum gibi) olmayan normal dosyaları okumak için. -mindepth 1grep-r-d skipgrep! -type dfind-type f-xtype ffindgrep
Stéphane Chazelas,

4
Ben grep -Hinbu yaklaşımı kullanmaya meyilliyim, böylece dosya adını ve olayın gerçekleştiği çizgiyi görebiliyorum.
GDP2 Nisanda
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.