Câu trả lời:
Bạn có thể sử dụng grep
lệnh từ thiết bị đầu cuối:
grep -r word *
Lệnh này sẽ tìm thấy tất cả các lần xuất hiện của "từ" trong tất cả các tệp trong thư mục hiện tại (hoặc thư mục con).
--color=auto
cờ có thể giải quyết điều đó.
Cài đặt công cụ tìm kiếm gnome.
sudo apt-get install gnome-search-tool
Mở Search for files
chọn Select More Options
và
which gnome-search-tool
= /usr/bin/gnome-search-tool
... nhưng khi tôi mở tùy chọn tìm kiếm trong gnome (Đi, Tìm kiếm tệp ...) không có tùy chọn nào cho "Chọn tùy chọn khác"
gnome-search-tool
và tôi chắc chắn bạn sẽ thấy nó.
Dưới đây là tổng quan về các phương pháp khác nhau mà người ta có thể sử dụng để tìm kiếm tệp cho các chuỗi văn bản cụ thể, với một vài tùy chọn được thêm cụ thể để chỉ hoạt động với tệp văn bản và bỏ qua tệp nhị phân / ứng dụng.
Tuy nhiên, bạn cần lưu ý rằng việc tìm kiếm từ có thể hơi phức tạp, bởi vì hầu hết các công cụ khớp dòng sẽ cố gắng tìm một từ ở bất cứ đâu trên dòng. Nếu chúng ta đang nói về một từ dưới dạng chuỗi có thể xuất hiện ở đầu hoặc cuối dòng hoặc một mình trên dòng hoặc được bao quanh bởi khoảng trắng và / hoặc dấu chấm câu - đó là khi chúng ta cần các cụm từ thông dụng và đặc biệt là những từ xuất hiện từ Perl. Ở đây, ví dụ, chúng ta có thể sử dụng -P
trong grep
để tận dụng Perl biểu thức thông thường để bao quanh nó.
$ 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
cho tìm kiếm đệ quy từ thư mục hiện tại-I
bỏ qua các tập tin nhị phân-H
để xuất tên tệp nơi tìm thấy kết quả khớpChỉ thích hợp để tìm kiếm.
$ find -type f -exec grep -IH 'word' {} \;
find
phần tìm kiếm đệ quy-I
tùy chọn là bỏ qua các tệp nhị phân-H
để xuất tên tệp nơi tìm thấy dòngcách tiếp cận tốt để kết hợp với các lệnh khác trong subshell, như:
$ 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 },".")
Đây là "cách bash". Không lý tưởng, có lẽ không có lý do chính đáng để sử dụng điều này khi bạn có grep
hoặc perl
cài đặt.
#!/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 "$@"
Câu hỏi khá cũ ... dù sao ... hiện tại (2016) có một ứng dụng gnome được gọi là tracker
(bạn có thể tìm thấy nó trong kho ubfox) có thể được cài đặt để tìm kiếm văn bản bên trong các tệp (đã thử odt-ods-odp-pdf) . Gói đi kèm với 4 gói khác sẽ được cài đặt (tracker-extract, tracker-gui, tracker-miner-fs, tracker-utils) Namastè :)
Vâng, tôi biết bạn đang tìm kiếm ứng dụng gui và đây là bài viết cũ, nhưng có lẽ điều này giúp được ai đó. Tôi tìm thấy ack-grep sử dụng. Đầu tiên cài đặt nó thông qua sudo apt-get install ack-grep
và sau đó chạy lệnh ack-grep what_you_looking_for
trong thư mục mà bạn muốn tìm kiếm. Điều này cho bạn thấy tất cả các tệp trong đó là văn bản của bạn và cũng hiển thị xem trước từ các tệp này. Và điều này rất quan trọng đối với tôi.
Thậm chí đơn giản và nhanh hơn là "trình tìm kiếm bạc" sudo apt-get install silversearcher-ag
. Hãy xem https://github.com/ggreer/the_silver_searcher để đánh giá lại lý do tại sao nó tốt hơn ack * trong số những người khác.
grep -r word .
.