Відповіді:
Ви можете використовувати grep
команду з терміналу:
grep -r word *
Ця команда знайде всі зустрічі "word" у всіх файлах у поточному каталозі (або в підкаталогах).
--color=auto
прапор може це вирішити.
Встановіть інструмент пошуку gnome-search.
sudo apt-get install gnome-search-tool
Відкрийте Search for files
вибір Select More Options
і
which gnome-search-tool
= /usr/bin/gnome-search-tool
... але коли я відкриваю опцію пошуку в gnome (Перейти, шукати файли ...), немає опції для "Вибрати додаткові параметри"
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-extra, tracker-gui, tracker-miner-fs, tracker-utils) Namastè :)
Так, я знаю, ви шукали заявку на gui, і це стара публікація, але, можливо, це комусь допоможе. Я знайшов ack-grep util. Спочатку встановіть його через, 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 .
.