Yanıtlar:
grep
Komutu terminalden kullanabilirsiniz :
grep -r word *
Bu komut, geçerli dizinin (veya alt dizinlerin) altındaki tüm dosyalardaki "word" kelimelerinin tüm oluşumlarını bulacaktır.
--color=auto
bayrak bunu çözebilir.
GNOME arama aracını kurun.
sudo apt-get install gnome-search-tool
Search for files
Seç Select More Options
ve aç
which gnome-search-tool
= /usr/bin/gnome-search-tool
... ama
gnome-search-tool
ve göreceğinize eminim.
Aşağıda, yalnızca metin dosyalarıyla çalışmak için özel olarak eklenmiş birkaç seçenekle, belirli metin dizeleri için dosya aramak için kullanılabilecek farklı yöntemlere genel bir bakış ve ikili / uygulama dosyalarını yoksaymak.
Bununla birlikte, kelime aramanın biraz karmaşık olabileceğine dikkat edilmelidir, çünkü çoğu satır eşleştirme aracı satırın herhangi bir yerinde bir kelime bulmaya çalışır. Satır başında veya sonunda veya satırda tek başına veya boşluklarla ve / veya noktalama işaretleriyle çevrelenmiş bir dize olarak bir kelimeden bahsediyorsak - o zaman düzenli ifadelere ve özellikle de gelenlere ihtiyaç duyarız. Perl. Burada, örneğin, kullanabileceğimiz -P
içinde grep
onu çevreleyecek Perl düzenli ifadeler yararlanmak.
$ 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
Geçerli dizinden özyinelemeli arama için-I
ikili dosyaları yoksaymak-H
eşleşmenin bulunduğu dosya adını çıkarmakSadece arama yapmak için uygundur.
$ find -type f -exec grep -IH 'word' {} \;
find
özyinelemeli arama bölümünü yapar-I
seçenek ikili dosyaları yoksaymaktır-H
satırın bulunduğu dosyanın adını çıkarmakdeniz kabuğu içindeki diğer komutlarla birleştirmek için iyi bir yaklaşım, örneğin:
$ 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 },".")
Bu "bash yoludur". İdeal değil, muhtemelen kurduğunuzda grep
veya perl
kurduğunuzda bunu kullanmak için iyi bir neden yoktur .
#!/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 "$@"
Soru oldukça eski ... her neyse ... şu anda (2016) tracker
dosyalarda metin aramak için kurulabilen (ubuntu depolarında bulabilirsiniz) adında bir gnome uygulaması var (odt-ods-odp-pdf denendi) . Paket, kurulacak 4 başka paketle birlikte gelir (tracker-extract, tracker-gui, tracker-miner-fs, tracker-utils) Namastè :)
Evet, GUI uygulamasını aradığınızı biliyorum ve bu eski bir yazı, ama belki bu birisi yardımcı olabilir. Ack-grep util buldum. İlk önce onu kurun sudo apt-get install ack-grep
ve sonra ack-grep what_you_looking_for
arama yapmak istediğiniz dizinde komutu çalıştırın . Bu, metninizdeki tüm dosyaları gösterir ve ayrıca bu dosyaların önizlemesini gösterir. Ve bu benim için çok önemli.
Daha basit ve daha hızlı "gümüş arayıcı" dır sudo apt-get install silversearcher-ag
. Diğerlerinin yanı sıra neden ack'tan daha iyi olduğu konusundaki nedenler için https://github.com/ggreer/the_silver_searcher adresini ziyaret edin .
grep -r word .
.