Linux жүйесінде файл мазмұнын іздеуді пайдалану үлкен және күрделі файлдық жүйелерде нақты ақпаратты іздеуге кететін уақыт пен күш-жігерді айтарлықтай азайтады.
Бұл іздеу әсіресе белгілі бір жолды немесе кілт сөзді қамтитын файлдарды табу қажет болғанда немесе белгілі бір үлгіге немесе критерийге сәйкес келетін барлық файлдарды табу қажет болғанда пайдалы болуы мүмкін.
Мазмұн бойынша файлдарды іздеу әртүрлі тапсырмалар үшін пайдаланылуы мүмкін, мысалы:
Файлдарды мазмұны бойынша іздеудің жалпы мақсаты – файлдық жүйемен жұмыс істеуді жеңілдету және файлдық жүйеде қажетті ақпаратты табу.
Ack утилитасынан бастайық. Ол 2005 жылы grep-ке балама ретінде құрылды және тез арада әзірлеушілер арасында танымал болды.
Оның grep
қарағанда бірнеше артықшылығы бар, соның ішінде:
grep
сияқты жүйелік қалталардан іздеуге тырыспайды. Бұл жүйеде жасырылған файлдарды оңай табуға болатынын білдіреді.ack қолдану мысалдары:
- Ағымдағы қалтадағы барлық файлдарды және оның құрамында
"test": ack "test"
- Дәл солай, бірақ
.bak: ack "test" --ignore-file=match:/.bak$/
- Ағымдағы қалтадағы «сәлем» жолын қамтитын барлық файлдарды табыңыз және әр файлдың алғашқы 2 жолын басып шығарыңыз:
ack "hello" --heading --max-count=2
Екінші қызықты құрал - ripgrep. Ол көптеген жолдармен ack-ге ұқсас, бірақ жылдамырақ іздеу алгоритмін пайдаланады, бұл оны әсіресе үлкен жобалар үшін пайдалы етеді.
Міне, кейбір мысалдар:
"test": rg "test"
.bak: rg "test" --glob "!*.bak"
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
Бұл құралдар сізге қажет файлдар мен жолдарды тез және тиімді табуға көмектеседі деп үміттенеміз. Қайсысын таңдасаңыз да, олардың барлығы жұмысыңызды айтарлықтай жылдамдататын кеңейтілген іздеуді ұсынады.