Jak używać ack do wyszukiwania nazwy pliku

16

Zacząłem używać ack, który jest znacznie szybszy niż grep. Jednak za pomocą potwierdzenia chcę wyszukać nazwę pliku zamiast jego zawartości. Czy jest na to sposób?

Nadal
źródło

Odpowiedzi:

16

Użyj właściwego narzędzia do właściwej pracy. Jeśli chcesz wyszukać nazwę pliku, użyj „find”:

$ # search for all *.txt file in current directory
$ find . -iname "*.txt"
Lie Ryan
źródło
1
bardzo prawdziwe. „gdy trzymasz w ręku młot, wszystko zaczyna wyglądać jak gwóźdź” :)
akira
2
Cóż, ack (i grep) są ładniejsze, ponieważ nie musisz mówić wprost o wyrażeniach regularnych, chyba że chcesz. Zwykle robięfind . | ack whatev.ext
Ehtesh Choudhury
Działa to również w przypadku wyszukiwania katalogów.
Pratik Khadloya
1
find i ack zachowują się inaczej, ponieważ ack domyślnie odfiltrowuje wiele wyników (zawartość katalogów kontroli wersji, skompilowane obiekty w repozytorium źródłowym), które zostałyby uwzględnione przez find. Najlepszy młotek zależy od oczekiwanych rezultatów.
Joshua Goldberg
1
To nie odpowiada na pytanie ...
lajarre
24
ack -g REGEX

Drukuj pliki, w których ścieżka względna + nazwa pliku odpowiada REGEX

Danil Kutkevich
źródło
1
dodaj [^/]*$do REGEX, aby wyszukać tylko w nazwie pliku
simon
7

Zgadzam się, że warto szukać, jeśli szukasz tylko plików * .txt. Jednak ack ma zaawansowane funkcje wykrywania typów plików, więc możesz z niego korzystać

ack -f --perl

który znajdzie wszystkie pliki Perla na podstawie zarówno nazwy pliku (* .pm, * .pl, * .t i * .pod), jak i linii shebang.

Andy Lester
źródło
1

Możesz to zrobić :

ack -f | ack "filename.ext"
Olivier
źródło