Начини плаћања Abuse

Претраживање датотека по садржају у Линуксу: ack и ripgrep

03.05.2023, 23:33

Коришћење претраге садржаја датотека у Линуксу може значајно смањити време и труд потребан за претрагу одређених информација у великим и сложеним фајл системима.

Зашто је потребно претраживати датотеке по садржају?

Ова претрага може бити посебно корисна када треба да пронађете датотеке које садрже одређени стринг или кључну реч или када треба да пронађете све датотеке које одговарају одређеном обрасцу или критеријуму.

Претраживање датотека по садржају може се користити за разне задатке, као што је претраживање:

  • одређени текст у великим текстуалним датотекама
  • конфигурационе датотеке и скрипте које садрже одређена подешавања или команде
  • датотеке које садрже одређене податке, као што су корисничка имена или бројеви телефона
  • датотеке по типу садржаја, као што је проналажење свих датотека које садрже JPEG слике или PDF документе.

Општа сврха претраживања датотека по садржају је да олакша рад са системом датотека и проналажење потребних информација у систему датотека.

назад

Почнимо са услужним програмом ack. Направљен је 2005. године као алтернатива grep-у и брзо је постао популаран међу програмерима.

Има неколико предности у односу на grep , укључујући:

  • Паметније претраге и изузимања датотека. Ack претражује само датотеке које подразумевано имају смисла, као што је изузимање .svn или .git фасцикли. Такође можете додати сопствена правила и изузимања;
  • претражи скривене датотеке и директоријуме по подразумеваним подешавањима;
  • Ack не покушава да претражује свуда, чак ни у системским фасциклама, као што је grep . То значи да можете лако пронаћи датотеке скривене у систему.

Примери коришћења команде ack:

  • Пронађи све датотеке у тренутној фасцикли и њеним подфасциклама које садрже реч "test": ack "test"
  • Исто, али искључујући датотеке са .bak: ack "test" --ignore-file=match:/.bak$/
  • Пронађи све датотеке у тренутној фасцикли које садрже стринг „hello“ и испиши прва 2 реда сваке датотеке: ack "hello" --heading --max-count=2

рипгреп

Други занимљив алат је ripgrep. Сличан је ack-у на много начина, али користи бржи алгоритам претраге, што га чини посебно корисним за велике пројекте.

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

  1. Пронађи све датотеке у тренутној фасцикли и њеним подфасциклама које садрже реч "test": rg "test"
  2. Исто, али искључујући датотеке са .bak: rg "test" --glob "!*.bak"
  3. Пронађи све датотеке у тренутној фасцикли које садрже стринг „hello“ и испиши прва 2 реда сваке датотеке: 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

Надамо се да ће вам ови алати помоћи да брзо и ефикасно пронађете датотеке и низове који су вам потребни. Који год да изаберете, сви они нуде напредну претрагу која може знатно убрзати ваш рад.