Как искать строки внутри файлов в папке?


98

Есть ли какая-либо утилита для поиска строки в файлах ASCII, чтобы избежать поиска в командной строке?

Как сделать поиск в командной строке, например, по строке «test» внутри всех файлов в каталоге /var/x/?


15
Вы действительно имеете в виду без использования командной строки? Потому что лучшим инструментом для этого остается grep ...
alci

В CLI Silver Searcher, вероятно, работает лучше.
Пабло А

Ответы:


78

Вы можете использовать searchmonkey. Инструмент доступен в репозиториях, так что вы можете просто

sudo apt-get install searchmonkey

С другой стороны, поиск командной строки с помощью grep действительно предназначен для этого ...

Вот скриншот от searchmonkey

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


разбился из-за слишком большой нагрузки :(
WiredIn

1
у меня были проблемы с searchmonkey. Он не заслуживает доверия в том смысле, что позволяет упускать множество случаев
Тони Джил

Как запустить «searchmonkey» из графического интерфейса? после установки с использованием командной строки, я бы предпочел не использовать командную строку
Echeban

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
@ Январь Когда двоичный файл читается как текст, он часто имеет очень длинные «строки» (потому что символ или последовательность символов, которые будут интерпретироваться как обозначающие конец строки, могут не появляться долго или вообще). В зависимости от того, как реализована утилита текстового поиска, это может вызвать проблемы с производительностью, если каждая «строка» будет полностью прочитана в память, а затем проверена, чтобы проверить, соответствует ли она строке поиска (что является разумным способом для grepкодирования, хотя я не знаю, grepнаписано ли так в Ubuntu ).
Элия ​​Каган,

1
«grep -i» для поиска без
учета

3
Должно быть *после последней косой черты в пути, или grep не выполняет никакой работы в 14.04
DavidScherer

20

Вы можете использовать regexxer, это отличный инструмент поиска / замены графического интерфейса для регулярных выражений.

Вы можете скачать по:

sudo apt-get install regexxer

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


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

6

Попробуйте Recoll, лучший графический интерфейс, который я когда-либо использовал. Чтобы установить recoll во всех поддерживаемых в настоящее время версиях Ubuntu, откройте терминал и введите:

sudo apt install recoll

Сначала нужно некоторое время для индексации файлов (вы можете указать путь к черному списку, его расширения или MIME).


Я могу подтвердить, что Recoll - это совершенно другой мир в отношении gnome-search-toolили search-monkey. Он использует Xapian, поэтому он может проверять и индексировать документы Word (как .doc, так и .docx), PDF-файлы, почтовые папки и т. Д.
Avio

Э-э, он доступен через deb package ( sudo apt install recoll) и выполняет свою работу даже при сбое даже grep, например, с документами .docx, которые сжимаются с помощью pkzip-сжатия.
Avio

обратите внимание, что recollсначала требуется индекс здания.
Yrogirg

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.
Аквахерд

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меню для поиска строк внутри файлов из папки.

Чтобы установить Sublime Text 3

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

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

Для поиска во всех файлах строки из папки в Sublime Text вы можете следовать этому вопросу для более четких ответов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.