使用Linux获取包含特定文本的文件

54l3d

我想在Linux中的特定目录中查找文件,而无需查看其子目录,该子目录的文本中包含特定字符串。这个答案中,我在删除了r递归后尝试了以下方法

grep -nw '/path/to/somewhere/' -e "pattern"

但它不起作用。我也尝试通过跳过目录optin来尝试此操作:

grep -rnw -d skip '/path/to/somewhere/' -e "pattern"

我试图排除与当前目录不同的任何目录,但也没有办法:

grep -rnw -exclude-dir '[^.]' '../../path/to/somewhere/' -e "pattern"
罗斯兰·奥斯曼诺夫(Ruslan Osmanov)

可能是这个问题令人困惑,我希望现在弄清楚,专利应该匹配内容而不是文件名!

您的问题不清楚,在原始答案中,我显示了如何查找与模式匹配的文件名如果您只想搜索内容与模式匹配的文件,则只需

grep 'pattern' directory/*

(使用外壳程序)。

您仍然可以使用find过滤掉文件,然后再传递给grep

find 'directory' -maxdepth 1 -mindepth 1 -type f \
  -exec grep --with-filename 'pattern' {} +

原始答案

Grep不是搜索文件名的合适工具,因为您需要在传递给Grep之前生成文件列表。即使使用一样的命令获得了预期的结果ls | grep pattern,您也必须追加另一个管道才能处理文件(我想,您很可能迟早需要以某种方式处理它们)。

find改用,因为它具有自己强大的模式匹配功能。

例子:

find 'directory' -maxdepth 1 -mindepth 1 -regex '.*pattern'

用途-iregex为不区分大小写版本-regex而且阅读-name-iname-path,和-ipath选项。


可以为要通过-exec操作处理的文件运行命令(或脚本),例如:

find 'directory' -maxdepth 1 -mindepth 1 -type f \
  -regex '.*pattern' -exec sed -i.bak -r 's/\btwo\b/2/g' {} +

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用sed从XML文件获取特定文本

使用 JQuery 获取不包含特定元素的文本

从JSON文件获取特定文本

使用padas读取文本文件以获取特定行

如何使用bash从文件中获取特定文本

如何使用Linux终端从日志文件中提取特定文本?

使用 BeautifulSoup 搜索包含特定文本的文本

如何在Linux上找到所有包含特定文本的文件?

递归搜索包含某些特定文本的文件

创建包含特定文本的压缩文件

删除文件中包含特定文本的行

确保txt文件中包含特定文本

使用正则表达式获取包含特定文本的列表

如何使用批处理从文本文件中获取特定文本的输出?

如何使用 R 从文本文件中提取包含特定单词或字符的句子

使用R检测包含特定单词的文本文件

如何使用 PowerShell 删除文本文件中的特定项目包含内容?

使用javascript替换文本文件中包含特定字符串的整行

使用C获取文本文件中两个特定点之间的特定信息

定位包含特定目录中文本的特定文件?

如何使用Python从某些特定CSS类的网站上获取文本,而该文本却包含在<p>中?

使用XPath从孙子获取文本并包含功能

从文本文件获取特定信息

从多行文件中获取特定文本

如何使用linux命令选择文本文件中包含信息的行

如何获取所有文件的名称(在一个目录中)包含一行特定的文本?

如何在 Linux 上查找包含特定文本但不在子目录中的所有文件?

如何使用bash脚本(sed,awk..etc)取消注释hocon文件中包含特定文本的特定行的注释

如何在<a>标记中获取包含特定URL的文本