Ответы:
Вы можете использовать grep
команду из терминала:
grep -r word *
Эта команда найдет все вхождения «word» во всех файлах в текущем каталоге (или подкаталогах).
--color=auto
флаг может решить это.
Установите gnome-search-tool.
sudo apt-get install gnome-search-tool
Открыть Search for files
выберите Select More Options
и
which gnome-search-tool
= /usr/bin/gnome-search-tool
... но когда я открываю опцию поиска в gnome (Go, Поиск файлов ...), нет опции "Выбрать дополнительные параметры"
gnome-search-tool
и я уверен, что вы увидите это.
Ниже приведен обзор различных методов, которые можно использовать для поиска файлов по определенным строкам текста, с несколькими добавленными параметрами, специально предназначенными для работы только с текстовыми файлами, и игнорированием двоичных файлов / файлов приложений.
Следует отметить, однако, что поиск слова может быть немного сложным, потому что большинство инструментов соответствия строк будут пытаться найти слово в любом месте строки. Если мы говорим о слове как о строке, которая может появиться в начале или конце строки, или одна в строке, или окруженная пробелами и / или пунктуацией - тогда нам понадобятся регулярные выражения, особенно те, которые идут из Perl. Вот, например, мы можем использовать -P
в grep
использовать Perl регулярных выражений , чтобы окружить ее.
$ printf "A-well-a don't you know about the bird?\nWell, everybody knows that the bird is a word" | grep -noP '\bbird\b'
1:bird
2:bird
$ grep -rIH 'word'
-r
для рекурсивного поиска вниз из текущего каталога-I
игнорировать двоичные файлы-H
вывести имя файла, где найдено совпадениеПодходит только для поиска.
$ find -type f -exec grep -IH 'word' {} \;
find
выполняет рекурсивный поиск-I
вариант игнорировать двоичные файлы-H
вывести имя файла, где находится строкахороший подход для объединения с другими командами в подоболочке, например:
$ find -type f -exec sh -c 'grep -IHq "word" "$1" && echo "Found in $1"' sh {} \;
#!/usr/bin/env perl
use File::Find;
use strict;
use warnings;
sub find_word{
return unless -f;
if (open(my $fh, $File::Find::name)){
while(my $line = <$fh>){
if ($line =~ /\bword\b/){
printf "%s\n", $File::Find::name;
close($fh);
return;
}
}
}
}
# this assumes we're going down from current working directory
find({ wanted => \&find_word, no_chdir => 1 },".")
Это и есть "путь". Не идеально, вероятно, нет веских причин использовать это, когда у вас есть grep
или perl
установлены.
#!/usr/bin/env bash
shopt -s globstar
#set -x
grep_line(){
# note that this is simple pattern matching
# If we wanted to search for whole words, we could use
# word|word\ |\ word|\ word\ )
# although when we consider punctuation characters as well - it gets more
# complex
case "$1" in
*word*) printf "%s\n" "$2";;
esac
}
readlines(){
# line count variable can be used to output on which line match occured
#line_count=1
while IFS= read -r line;
do
grep_line "$line" "$filename"
#line_count=$(($line_count+1))
done < "$1"
}
is_text_file(){
# alternatively, mimetype command could be used
# with *\ text\/* as pattern in case statement
case "$(file -b --mime-type "$1")" in
text\/*) return 0;;
*) return 1;;
esac
}
main(){
for filename in ./**/*
do
if [ -f "$filename" ] && is_text_file "$filename"
then
readlines "$filename"
fi
done
}
main "$@"
Вопрос довольно старый ... во всяком случае ... в настоящее время (2016) существует приложение gnome, которое называется tracker
(вы можете найти его в репозиториях Ubuntu), которое можно установить для поиска текста внутри файлов (пробовал odt-ods-odp-pdf) , Пакет поставляется с 4 другими пакетами для установки (tracker-extract, tracker-gui, tracker-miner-fs, tracker-utils) Namastè :)
Да, я знаю, что вы искали приложение графического интерфейса, и это старый пост, но, возможно, это кому-то поможет. Я нашел утилиту ack-grep. Сначала установите его через, sudo apt-get install ack-grep
а затем запустите команду ack-grep what_you_looking_for
в каталоге, где вы хотите найти. Это покажет вам все файлы, в которых находится ваш текст, а также показать предварительный просмотр из этих файлов. И это так важно для меня.
Еще проще и быстрее «серебряный искатель» sudo apt-get install silversearcher-ag
. Взгляните на https://github.com/ggreer/the_silver_searcher, чтобы узнать, почему он лучше, чем ack * среди других.
grep -r word .
.