Як шукати рядки всередині файлів у папці?


98

Чи є утиліта для пошуку рядка у файлах ASCII, щоб уникнути пошуку командного рядка?

Як зробити пошук у командному рядку, наприклад, для рядка "test" усередині файлів у каталозі /var/x/?


15
Ви дійсно маєте на увазі без використання командного рядка? Тому що найкращим інструментом для цього залишається
греп

У CLI Silver Searcher, мабуть, робить кращу роботу.
Пабло А

Відповіді:


78

Ви можете використовувати searchmonkey. Інструмент доступний у сховищах, так що ви можете просто

sudo apt-get install searchmonkey

З іншого боку, пошук командного рядка з grep дійсно призначений для цього ...

Ось скріншот із searchmonkey

введіть тут опис зображення


аварія через занадто велике навантаження :(
WiredIn

1
у мене виникли проблеми з пошуковою мавпою. Це не заслуговує на довіру в тому сенсі, що він дозволяє пропускати безліч подій
tony gil

як запустити "searchmonkey" з графічного інтерфейсу? після встановлення за допомогою командного рядка я краще не використовую командний рядок
Ечебан

153

Я припускаю, що ваше перше запитання стосується альтернативи GUI для grepкоманди. Я не можу вам у цьому допомогти, я завжди вважаю командний рядок дуже ефективним.

Щодо командного рядка, спробуйте

grep "test" /var/x/*

Якщо ви хочете шукати рекурсивно (тобто не лише /var/x/у підкаталогах, а й у їхніх підкаталогах), робіть

grep -R "test" /var/x/

Щоб уникнути схоплювання файлів, які grep вважають бінарними, скористайтеся -Iопцією:

grep -I "test" /var/x/

Якщо grep вважає, що файл є двійковим (базується на перших кількох байтах файлу), він вважає, що він не відповідає замість того, щоб пройти через весь файл.


1
Чи спрацює, якщо в папці містяться файли, які не належать ascii?
Анвар

1
Що ж, grep також спробує шукати рядок у двійковому файлі та повідомити про це, якщо він відповідає:Binary file file.jpg matches
січня

1
@January Коли двійковий файл читається як текст, він часто має надзвичайно довгі "рядки" (тому що символьна або символьна послідовність, яку слід інтерпретувати для позначення кінця рядка, може не з’являтися довго чи ніколи). Залежно від способу реалізації утиліти пошуку тексту, це може спричинити проблеми з продуктивністю, якщо кожен "рядок" читається повністю в пам'яті, а потім перевіряється, чи відповідає він рядку пошуку (що є розумним способом grepкодування, хоча я не знаю, чи grepнаписано так Ubuntu ).
Елія Каган

1
"grep -i" для нечутливого пошуку справи
Czarek Tomczak

3
Має бути *після остаточного прорізу в шляху або греп не буде робити жодної роботи в 14.04
DavidScherer

20

Ви можете використовувати regexxer - це чудовий інструмент пошуку / заміни графічного інтерфейсу для регулярних виразів.

Ви можете завантажити:

sudo apt-get install regexxer

введіть тут опис зображення


це дуже швидко, але проблеми, які у мене є у цій програмі, є: 1. у нього немає режиму лише для читання, тому я випадково нічого не замінюю чи не видалюю 2. він показує текст, але не перейде до конкретного лінія, з якою узгоджується візерунок. (Я прокручував близько 2000 рядків коду, щоб знайти те, що було після зміни кольору на яскраво-червоний!)
Мехрад Махмудян

6

Спробуйте Recoll, найкращий GUI, який я коли-небудь використовував. Щоб встановити перезапуск у всіх підтримуваних на даний момент версіях Ubuntu, відкрийте термінал і введіть:

sudo apt install recoll

Спочатку потрібен певний час, щоб індексувати файли (можна визначити шлях чорного списку чи розширення або mime).


Я можу підтвердити, що Recoll - це зовсім інший світ щодо gnome-search-toolабо search-monkey. Він використовує Xapian, тому він може перевіряти та індексувати текстові документи (як .doc та .docx), файли pdf, папки для пошти тощо
Avio

Так, це доступно через deb упаковку ( sudo apt install recoll), і вона робить свою роботу там, де навіть греп не вдається, наприклад, з документами .docx, які стиснуті компресією pkzip.
Авіо

зауважте, що recollспочатку потрібен індекс побудови.
Ірогірг

5

Ви можете використовувати grepкоманду з терміналу:

grep -r string *

Ця команда знайде всі випадки "string" у всіх файлах у поточному каталозі (або підкаталогах).

Для прихованих файлів ви можете використовувати:

grep -r string ..


2

На жаль, grep виконує дуже погану роботу з пошуку файлів Word (.doc), але ви можете передавати catdoc вихід у grep. Я не програміст, але цей маленький сценарій добре працює для мене:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

Всі покращення та пропозиції вітаються!


1
Це питання стосувалося графічних програм та простих текстових файлів. Я не впевнений, що grepі .docщо стосується питання.
Андреа Корбелліні

Здається, добре, див. Детальну відповідь січня про grep.
aquaherd

2

Щойно я випустив простий інструмент для виконання роботи. Думав, головним чином для розробника програмного забезпечення, він має (унікальну?) Характеристику відкриття декількох файлів у одному вікні. Він представляє результати в браузері за допомогою редактора Ace (рекомендується!) Або html textarea. Це інструмент на базі Java, який працює як у Windows, так і в Linux.

Перевір!

https://sourceforge.net/projects/queacetu.gastona.p/


1

за https://askubuntu.com/a/1141367/47073

Ви можете використовувати mate-search-tool, що те саме, gnome-search-toolщо було видалено. У мене були проблеми з searchmonkey, у неї були відсутні деякі результати і повільно, не рекомендую.

Щоб встановити mate-search-tool:

sudo apt install mate-utils
mate-search-tool

0

Ви можете скористатися параметром Sublime Text Find in Files з Findменю для пошуку рядків у файлах із папки.

Встановлення піднесеного тексту 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Ви також можете дотримуватися цього питання для інших можливих способів встановлення Sublime на Ubuntu .

Для пошуку у всіх файлах рядка з папки в піднесеному тексті ви можете дотримуватися цього питання для отримання більш чітких відповідей.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.