Metody płatności Abuse

Przeszukiwanie plików według zawartości w Linuksie: ack i ripgrep

03.05.2023, 23:33

Korzystanie z wyszukiwania plików według zawartości w systemie Linux może znacznie skrócić czas i zmniejszyć wysiłek związany z wyszukiwaniem określonych informacji w dużych i złożonych systemach plików.

Dlaczego warto wyszukiwać pliki według zawartości

To wyszukiwanie może być szczególnie przydatne, gdy chcesz znaleźć pliki zawierające określony ciąg znaków lub słowo kluczowe, lub gdy chcesz znaleźć wszystkie pliki pasujące do określonego wzorca lub kryterium.

Wyszukiwanie plików według zawartości może być używane do różnych zadań, takich jak znajdowanie

  • określonego tekstu w dużych plikach tekstowych
  • plików konfiguracyjnych i skryptów zawierających określone ustawienia lub polecenia
  • plików zawierających określone dane, takie jak nazwy użytkowników lub numery telefonów
  • plików według typu zawartości, takich jak wyszukiwanie wszystkich plików zawierających obrazy JPEG lub dokumenty PDF.

Ogólnym celem wyszukiwania plików według zawartości jest ułatwienie pracy z systemem plików i znalezienie potrzebnych informacji w systemie plików.

ack

Zacznijmy od narzędzia ack. Zostało ono stworzone w 2005 roku jako alternatywa dla grep i szybko stało się popularne wśród programistów.

Ma kilka zalet w porównaniu do grep, w tym:

  • inteligentniejsze wyszukiwanie plików i wyjątków. Ack domyślnie wyszukuje tylko w plikach, które mogą mieć sens, na przykład wykluczając foldery .svn lub .git. Można też dodawać własne reguły i wyjątki;
  • Ack domyślnie przeszukuje ukryte pliki i katalogi;
  • Ack nie próbuje przeszukiwać wszędzie, nawet folderów systemowych, jak grep. Oznacza to, że można łatwo znaleźć pliki ukryte w systemie.

Przykłady użycia ack:

  • Znajdź wszystkie pliki w bieżącym folderze i jego podfolderach, które zawierają słowo "test": ack "test"
  • To samo, ale z wyłączeniem plików z rozszerzeniem .bak: ack "test" --ignore-file=match:/.bak$/
  • Znalezienie wszystkich plików w bieżącym folderze zawierających ciąg "hello" i wypisanie pierwszych 2 linii każdego pliku: ack "hello" --heading --max-count=2

ripgrep

Drugim interesującym narzędziem jest ripgrep. Jest podobne do ack na wiele sposobów, ale używa szybszego algorytmu wyszukiwania, co czyni go szczególnie przydatnym w przypadku dużych projektów.

Oto kilka przykładów:

  1. Znajdź wszystkie pliki w bieżącym folderze i jego podfolderach, które zawierają słowo "test": rg "test"
  2. To samo, ale z wyłączeniem plików z rozszerzeniem .bak: rg "test" --glob "!*.bak"
  3. Znajdź wszystkie pliki w bieżącym folderze zawierające ciąg "hello" i wypisz 2 pierwsze wiersze każdego pliku: rg "hello" --heading --max-columns=2

Na koniec warto wspomnieć o fzf. Nie jest to tylko wyszukiwarka ciągów znaków jak ack i ripgrep. Fzf jest używany jako narzędzie do wyszukiwania plików, folderów i elementów na liście. W przeciwnym razie działa podobnie do ack/ripgrep, ale z dodatkową możliwością filtrowania wyników na żywo. Oto kilka przykładów:

  • Wyszukiwanie plików zaczynających się na literę F na komputerze: locate F | fzf -m
  • Wyjście z bieżącego folderu i przejście do wybranego katalogu: cd **<TAB> | fzf
  • Wybierz wersję SVN i skopiuj numer do schowka: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Mamy nadzieję, że te narzędzia pomogą ci szybko i skutecznie znaleźć potrzebne pliki i ciągi znaków. Niezależnie od wyboru, wszystkie oferują zaawansowane wyszukiwanie, które może znacznie przyspieszyć pracę.