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

85

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

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

    
задан Nuno 09.10.2012 в 10:33
источник

7 ответов

67

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

sudo apt-get install searchmonkey

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

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

    
ответ дан alci 09.10.2012 в 10:41
источник
131

Я предполагаю, что ваш первый вопрос касается альтернативы GUI для команды grep . Я не могу с этим поделать, я всегда считаю, что командная строка очень эффективна.

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

grep "test" /var/x/*

Если вы хотите искать рекурсивно (т. е. не только в /var/x/ , но и в их подкаталогах),

grep -R "test" /var/x/

Чтобы избежать grepping файлов, которые grep считает двоичными, используйте параметр -I :

grep -I "test" /var/x/

Если grep считает, что файл двоичный (на основе первых нескольких байтов файла), он предположит, что он не совпадает, а не проходит через весь файл.

    
ответ дан January 09.10.2012 в 10:46
15

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

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

sudo apt-get install regexxer

    
ответ дан user61928 09.10.2012 в 12:57
5

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

sudo apt install recoll

Необходимо сначала индексировать файлы (вы можете определить путь или расширение черного списка или mime).

    
ответ дан user244846 05.02.2014 в 12:28
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

Все улучшения и предложения приветствуются!

    
ответ дан Ralph 26.01.2013 в 15:28
2

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

grep -r string *

Эта команда найдет все вхождения «string» во всех файлах в текущем каталоге (или поддресах).

Для скрытых файлов вы можете использовать:

grep -r string ..     

ответ дан inquisitive 16.04.2015 в 11:58
1

Я только что выпустил простой инструмент для выполнения этой задачи. Мысль, главным образом, для разработчиков программного обеспечения, имеет (уникальную?) Характеристику открытия нескольких файлов в одном окне. Он представляет результаты в браузере с помощью редактора Ace (рекомендуется!) Или html textarea. Это инструмент на основе Java, поэтому он работает как в Windows, так и в Linux.

проверить это!

Ссылка

    
ответ дан Alejadro Xalabarder 01.11.2016 в 22:35