在Ubuntu 12.4之前,我曾经以一个破折号启动一个应用程序,我认为它被称为“搜索文件。 ”,其图标是放大镜。我再也找不到那个简单的应用程序了。
#1 楼
您可以在终端上使用grep
命令: grep -r word *
此命令将在当前目录(或子目录)下的所有文件中查找所有出现的“单词”。 br />
#2 楼
安装gnome-search-tool。sudo apt-get install gnome-search-tool
打开
Search for files
选择Select More Options
和评论
您必须重新启动操作系统才能使其正常工作吗?还是在12天内不起作用?
– jcollum
13年4月18日在20:55
您是否已完成安装部分?我很确定它必须可以工作,并且可以在13.04上运行。
–辛格夫
13年4月19日在11:29
哪个gnome-search-tool = / usr / bin / gnome-search-tool ...但是当我在gnome中打开搜索选项(转到,搜索文件...)时,“选择更多选项”没有选项
– jcollum
13年4月19日在17:25
通过输入终端:gnome-search-tool打开,我确定您会看到它。
–辛格夫
13年4月20日在12:49
不幸的是,gnome-search-tool已从ubuntu中删除
–于罗吉格
19年9月18日在0:55
#3 楼
以下是可用于搜索文件以查找特定文本字符串的不同方法的概述,其中添加了一些专门用于仅使用文本文件而忽略二进制/应用程序文件的选项。应注意但是,搜索单词可能会有些复杂,因为大多数行匹配工具都会尝试在行中的任何位置查找单词。如果我们谈论的单词是字符串,它可能出现在行的开头或结尾,或者单独出现在行中,或者被空格和/或标点符号包围-那时我们将需要正则表达式,尤其是那些来自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
$ grep -rIH 'word'
-r
用于从当前目录向下搜索-I
忽略二进制文件-H
输出文件名,其中找到匹配项仅适用于搜索。
查找+ grep
$ find -type f -exec grep -IH 'word' {} \;
/>
find
做递归搜索部分-I
选项是忽略二进制文件-H
输出找到行的文件名结合subshell中的其他命令,例如:
$ find -type f -exec sh -c 'grep -IHq "word" "" && echo "Found in "' sh {} \;
Perl
#!/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 },".")
递归bash脚本中的穷人递归grep
这是“ bash方式”。不理想,安装
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 "" in
*word*) printf "%s\n" "";;
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 < ""
}
is_text_file(){
# alternatively, mimetype command could be used
# with *\ text\/* as pattern in case statement
case "$(file -b --mime-type "")" 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 "$@"
#4 楼
问题很老...无论如何...当前(2016年),有一个名为
tracker
的gnome应用程序(您可以在ubuntu存储库中找到),可以安装该应用程序以搜索文件中的文本(尝试odt-ods) -odp-pdf)。该软件包随附其他4个要安装的软件包(tracker-extract,tracker-gui,tracker-miner-fs,tracker-utils)
Namastè:)
评论
Tracker是很好的软件,但是它要求索引已经包含有关您感兴趣的文件的信息,以便通过搜索将其击中。它使用的资源比Recoll少,我不确定索引的大小。但是,如果您需要搜索带有特定文本的文件并希望使用gui进行搜索,那么gnome-search-tool可以解决该问题而无需索引。在以前的Ubuntu版本中,它是默认应用程序,我不知道为什么他们没有替换就删除了它。
– Hatoru Hansou
16-9-27在1:25
#5 楼
是的,我知道您正在寻找gui应用程序,这是旧文章,但这可能对某人有所帮助。我找到了ack-grep util。首先,通过
sudo apt-get install ack-grep
安装它,然后在要搜索的目录中运行命令ack-grep what_you_looking_for
。这将显示所有包含文本的文件,并显示该文件的预览。这对我来说很重要。#6 楼
更加简单快捷的是“银色搜索器”sudo apt-get install silversearcher-ag
。请看一看https://github.com/ggreer/the_silver_searcher,以了解为什么它比ack *更好。#7 楼
如果要搜索特定文件,可以指定通配符。例如:
如果要查找所有包含单词
SSLCertificateFile
的* .conf文件,您可以在root用户上运行它:sudo grep -rIH 'SSLCertificateFile' --include \*.conf
评论
星号与隐藏文件不匹配。要搜索所有文件,您可以运行grep -r word ..
–伊恩·麦金农
2012年4月29日在17:51
如果从外壳程序脚本调用grep,则搜索关键字可能不会突出显示,但是--color = auto标志可以解决该问题。
– noobninja
17年12月21日在20:45