Начини на плащане Abuse

Търсене на файлове по съдържание в Linux: ack и ripgrep

03.05.2023, 23:33

Използването на търсенето на файлове по съдържание в Linux може значително да намали времето и усилията при търсене на конкретна информация в големи и сложни файлови системи.

Защо е необходимо да търсите файлове по съдържание

Това търсене може да бъде особено полезно, когато искате да намерите файлове, които съдържат определен низ или ключова дума, или когато искате да намерите всички файлове, които отговарят на определен модел или критерий.

Търсенето на файлове по съдържание може да се използва за различни задачи, като например намиране:

  • определен текст в големи текстови файлове
  • конфигурационни файлове и скриптове, съдържащи определени настройки или команди
  • файлове, които съдържат специфични данни, като например потребителски имена или телефонни номера
  • търсене на файлове по тип съдържание, например намиране на всички файлове, съдържащи JPEG изображения или PDF документи.

Общата цел на търсенето на файлове по съдържание е да се улесни работата с файловата система и да се намери необходимата информация във файловата система.

ack

Нека да започнем с помощната програма ack. Тя е създадена през 2005 г. като алтернатива на grep и бързо става популярна сред разработчиците.

Тя има няколко предимства пред grep, включително:

  • по-интелигентно търсене на файлове и изключения. По подразбиране Ack търси само във файлове, които могат да имат смисъл, например като изключва папки .svn или .git. Можете да добавяте и свои собствени правила и изключения;
  • Ack търси скрити файлове и директории по подразбиране;
  • Ack не се опитва да търси навсякъде, дори в системните папки, както grep. Това означава, че можете лесно да намерите скрити файлове в системата си.

Примери за използване на ack:

  • Намерете всички файлове в текущата папка и нейните подпапки, които съдържат думата "test": ack "test"
  • Същото нещо, но с изключване на файлове с разширение .bak: ack "test" --ignore-file=match:/.bak$/
  • Намиране на всички файлове в текущата папка, съдържащи символа "hello", и извеждане на първите два реда от всеки файл: ack "hello" --heading --max-count=2

ripgrep

Вторият интересен инструмент е ripgrep. В много отношения той е подобен на ack, но използва по-бърз алгоритъм за търсене, което го прави особено полезен за големи проекти.

Ето няколко примера:

  1. Намерете всички файлове в текущата папка и нейните подпапки, които съдържат думата "test": rg "test"
  2. Същото, но с изключение на файловете с разширение .bak: rg "test" --glob "!*.bak"
  3. Намиране на всички файлове в текущата папка, съдържащи символа "hello", и извеждане на първите два реда от всеки файл: rg "hello" --heading --max-columns=2

Накрая си струва да споменем fzf. Това не е просто търсачка на низове като ack и ripgrep. Fzf се използва като помощна програма за намиране на файлове, папки и елементи в списък. Иначе работи подобно на ack/ripgrep, но с добавена възможност за филтриране на резултатите в реално време. Ето някои примери:

  • Търсене на файлове, започващи с буквата F на вашия компютър: locate F | fzf -m
  • Излизане от текущата папка и отиване в желаната директория: cd **<TAB> | fzf
  • Изберете ревизията на SVN и копирайте номера й в клипборда: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Надяваме се, че тези инструменти ще ви помогнат да намерите бързо и ефективно необходимите ви файлове и низове. Който и да изберете, всички те предлагат разширено търсене, което може значително да ускори работата ви.