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

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

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

98
задан 06.05.2020, 21:19

7 ответов

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

sudo apt-get install searchmonkey

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

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

enter image description here

78
ответ дан 06.05.2020, 21:20
  • 1
    как делают я выполняю " searchmonkey" от GUI? после установлено использование командной строки, I' d скорее не используют командную строку – Lee 06.05.2020, 21:21
  • 2
    у меня были проблемы с searchmonkey. Это не защищено в том смысле, что это позволяет, подсовывает много случаев – Juan Andrés Diana 06.05.2020, 21:21
  • 3
    разрушенный должный слишком много загрузиться: ( – Lee 06.05.2020, 21:21

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

grep -r string *

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

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

grep -r string ..

5
ответ дан 06.05.2020, 21:20

К сожалению, 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

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

2
ответ дан 06.05.2020, 21:21
  • 1
    Кажется OK, см. January' s подробный ответ [приблизительно 110]. – caf 06.05.2020, 21:22
  • 2
    Этот вопрос был о файлах простого текста и графических приложениях. I' m не уверенный, что grep и .doc имеют отношение к вопросу. – Matt Solnit 06.05.2020, 21:22

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

Проверьте это!

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

2
ответ дан 06.05.2020, 21:22

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

sudo apt install recoll

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

6
ответ дан 06.05.2020, 21:23
  • 1
    Я могу подтвердить, что Recoll является полностью другим миром относительно gnome-search-tool или search-monkey. Это использует Xapian, таким образом, it' s способный осмотреть и индексировать документы слова (и .doc и .docx), файлы PDF, почтовые папки, и т.д. – Steve Jessop 06.05.2020, 21:23
  • 2
    обратите внимание, что recoll требует, чтобы здание индексировало сначала. – MarkR 06.05.2020, 21:23
  • 3
    Мм, it' s доступный через deb упаковка (sudo apt install recoll) и это делает свое задание, где даже grep сбои, например, с .docx документами, которые сжаты с pkzip сжатием. – Lucas 06.05.2020, 21:24

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

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

sudo apt-get install regexxer

enter image description here

20
ответ дан 06.05.2020, 21:23
  • 1
    это супер быстро, но проблемы, которые я имею с этим приложением: 1. это не имеет режима только для чтения, таким образом, я don' t случайно заменяют или удаляют что-либо 2. это показывает текст, но это не переместится в определенную строку, которой соответствовал шаблон. (Я прокрутил приблизительно 2 000 строк кода для нахождения то, что я после после изменял цвет на яркий красный!) – Josem 06.05.2020, 21:24

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

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

grep "test" /var/x/*

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

grep -R "test" /var/x/
[119 ] Чтобы избежать поиска файлов, которые grep считает двоичными, используйте параметр -I:

grep -I "test" /var/x/

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

153
ответ дан 06.05.2020, 21:24

Теги

Похожие вопросы