Som*_*eMe 158 files text-processing
我想在我的硬盘中找到一个包含特定单词的文本文件。
在Ubuntu 12.4之前,我曾经在dash中启动一个应用程序,我认为它被称为“搜索文件...”,其图标是一个放大镜。我再也找不到那个简单的应用程序了。
Ste*_*pel 247
您可以grep从终端使用命令:
grep -r word *
Run Code Online (Sandbox Code Playgroud)
此命令将查找当前目录(或子目录)下所有文件中所有出现的“单词”。
hin*_*gev 73
安装 gnome-search-tool。
sudo apt-get install gnome-search-tool
Run Code Online (Sandbox Code Playgroud)
打开Search for files选择Select More Options和
Ser*_*nyy 16
这里概述了可用于搜索特定文本字符串的文件的不同方法,其中添加了一些专门用于仅处理文本文件并忽略二进制/应用程序文件的选项。
但是,应该注意,搜索单词可能会变得有点复杂,因为大多数行匹配工具会尝试在行中的任何位置查找单词。如果我们将一个单词作为字符串讨论,它可以出现在行首或行尾,或者单独出现在行上,或者被空格和/或标点符号包围 - 这就是我们需要正则表达式的时候,尤其是那些出现的来自 Perl。在这里,例如,我们可以使用-Pingrep来利用 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
Run Code Online (Sandbox Code Playgroud)
$ grep -rIH 'word'
Run Code Online (Sandbox Code Playgroud)
-r 用于从当前目录向下递归搜索-I 忽略二进制文件-H 输出找到匹配项的文件名仅适用于搜索。
$ find -type f -exec grep -IH 'word' {} \;
Run Code Online (Sandbox Code Playgroud)
find 递归搜索部分-I 选项是忽略二进制文件-H 输出找到行的文件名与子shell中的其他命令结合的好方法,例如:
$ find -type f -exec sh -c 'grep -IHq "word" "$1" && echo "Found in $1"' sh {} \;
Run Code Online (Sandbox Code Playgroud)$ 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
Run Code Online (Sandbox Code Playgroud)
这就是“bash方式”。不理想,可能没有充分的理由在您拥有grep或perl安装时使用它。
$ grep -rIH 'word'
Run Code Online (Sandbox Code Playgroud)
小智 6
问题很老了......无论如何......目前(2016年)有一个名为tracker(你可以在ubuntu存储库中找到它)的gnome应用程序可以安装来搜索文件中的文本(尝试过odt-ods-odp-pdf) . 该软件包附带 4 个要安装的其他软件包(tracker-extract、tracker-gui、tracker-miner-fs、tracker-utils) Namastè :)
| 归档时间: |
|
| 查看次数: |
334097 次 |
| 最近记录: |