将文件列表传递给 grep

2024-04-25

我有一个文件中的文件列表。该列表很大,并且文件名是非标准的:这意味着,有些文件名包含空格、非 ascii 字符、引号、单引号...

所以,通过那个huge不能选择将文件列表作为 grep 参数:

  • 因为我不确定我不会超过linux允许的参数长度。我想我可以通过对参数进行分区来解决这个问题xargs, 尽管。
  • 因为转义这些字符很复杂。如果我想将文件名括在双引号中,而该文件名恰好有双引号,那么我就有麻烦了。所以我需要转义一些字符。整个事情看起来很复杂,我不想走那条路。

必须有一种更简单的方法:如何告诉 grep 使用我的文件列表作为 grep 的来源文件?我认为由于 shell 不会处理文件列表,因此转义和参数长度不再是问题。问题是grep是否支持这种操作方式,我在文档中一直找不到。


据我所知,GNU grep 不支持这一点。你有几个选择。

使用 bash 循环来解析文件列表

这是@fedorqui提供的解决方案

while read file; do 
    grep "$PATTERN" "$file" 
done < file_with_list_of_files

使用 xargs 一次将多个文件传递给 grep

这里我告诉 xargs 将 10 个文件名传递给 grep

PATTERN='^$' # searching for blank lines
xargs -n 10 -d '\n' grep "$PATTERN" < file_with_list_of_files

使用 xargs 将多个文件一次传递给 grep,处理文件名中的换行符

如上所述,但使用空终止行

PATTERN='^$' # searching for blank lines
tr '\n' '\0' file_with_list_of_files
xargs -n 10 -0 grep "$PATTERN" < file_with_list_of_files

Edit:正确处理空白Edit2:删除产生乱码输出的示例,添加处理换行符的示例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文件列表传递给 grep 的相关文章

  • 在大型数据集上使用 grep 或 fgrep 的循环速度非常慢

    我正在尝试做一些非常简单的事情 grep 从列表中 对目录中的文件进行精确匹配的字符串 try grep each line from the files for i in cat data datafile do LOOK echo i
  • Shell 脚本从日志中获取过去一小时的异常

    我正在开发脚本 该脚本将 grep 最近一小时的日志并检查任何异常并向Solaris 平台发送电子邮件 我做了以下步骤 grep n h date Y m d H M test logs 上面的命令给了我行号 然后我执行以下操作 tail
  • 一般来说,什么更快,是通过文件进行 grep 还是通过 blob 运行 SQL LIKE %x% 查询?

    假设我正在设计一个工具 可以将代码片段保存在 PostgreSQL MySQL 数据库或文件系统中 我想搜索这些片段 使用像Sphinx这样的搜索引擎似乎不太实用 因为我们在搜索代码时需要代码的精确文本匹配 grep and ack并且一直
  • 如何在 Mac 上从 ifconfig 获取格式为“接口:IP 地址”的输出

    我试图从 ifconfig 中获取以下格式化输出 en0 10 52 30 105 en1 10 52 164 63 我至少能够弄清楚如何使用以下命令获取 IP 地址 淘汰 localhost 但这不足以满足我的要求 ifconfig gr
  • 使用正则表达式前瞻,egrep

    如果您的文件包含 apples are good apple cider is also good 为什么会egrep apples app file无法接听任何线路 在 MAC 上使用egrep 2 5 1 扩展正则表达式不具有积极的前瞻
  • 如何在源代码中查找搜索词

    我正在寻找一种在项目的 C C 代码中搜索给定术语的方法 同时忽略注释和字符串中出现的任何情况 由于代码库相当大 我正在寻找一种方法自动地识别与我的搜索词匹配的代码行 因为它们需要手动检查 如果可能的话 我想在我的 Linux 系统上执行搜
  • 打印文件中的第一个和最后一个匹配项

    对于以下问题是否有更清洁的解决方案 grep INFO messages head 1 grep INFO messages tail 1 INFO 或消息的长度是随机的 Try grep INFO messages sed n 1p p
  • 输出文件名,不是带有选择字符串的字符串

    我正在使用 powershell 来 grep 特定字符串的源代码 如果字符串在文件中 我想要文件的名称 而不是包含该字符串的代码行 我还想要文件名 仅一次 而不是与文件存在的次数一样多地列出 我目前正在使用 gci include sql
  • 仅 Grep 第一个匹配项并停止

    我正在使用 grep 递归搜索目录 并使用以下参数希望只返回第一个匹配项 不幸的是 它返回了不止一个 事实上 我上次查看时返回了两个 似乎我有太多的争论 尤其是没有得到想要的结果 grep o a m 1 h r Pulsanti Oper
  • sh 和 bash 中 pgrep 的区别

    这是一个测试 bash c pgrep f novalidname sh c pgrep f novalidname 11202 Why is pgrep运行时给出输出sh 据我所知 我的计算机上没有名为novalidname 这可能是一个
  • 错误:“grep:参数列表太长”[重复]

    这个问题在这里已经有答案了 我正在尝试运行以下命令 但出现参数太长错误 你能帮我吗 HOST grep rl pattern home public html bash bin grep Argument list too long 有没有
  • Unix 'find' + 'grep' 语法与 awk

    我使用这一行在我所在目录及其所有子目录的文件中查找短语 B206 find exec grep s B206 print 当它尝试读取某些文件并实际上将 putty 中的标题栏更改为一堆奇怪的字符时 它会崩溃 例如 当它遇到子目录中的 jp
  • 如何 grep grep 返回的文件内容?

    当我使用以下命令查找带有错误消息的日志文件时grep error log 它返回日志文件列表 grep error log Binary file out0080 2011 01 07 12 38 log matches Binary fi
  • 如何为 docker 容器的日志着色

    我有一个容器 有时在日志中写入对我来说很重要的关键字 我想在终端中以颜色突出显示该单词 但同样重要的是仍然实时查看所有内容日志 follow 我刚刚尝试过命令 docker logs f my app tail 100 grep color
  • 更改grep命令的分隔符

    我在用grep检测 a href xxxx something here a 当链接在输入中分成两行时 这不起作用 我想 grep 检查直到它检测到但现在它只是将输入输入到 grep 中 直到检测到新行为止 所以如果输入是这样的 a hre
  • 如何从纯文本中查找键值存储中的值

    给定一个纯文本文件 其中包含 FOO foo BAR bar BAZ baz 我们如何grep使用键获取值 Use a 向后看 https regex101 com r q3FNpe 1 grep Po lt FOO w file foo
  • 如何使用 grep 查找文件夹内的单词?

    在 Windows 中 我会进行搜索以在文件夹中查找单词 同样 我想知道某个特定单词是否出现在包含许多子目录和文件的目录中 我对 grep 语法的搜索显示我必须指定文件名 即grep string filename Now I do not
  • 使用 ls 和 grep 列出具有特定扩展名的文件

    我只想从当前目录获取文件 并且只输出 mp4 mp3 exe 文件 没有其他内容 所以我想我可以这样做 ls grep mp4 grep mp3 grep exe 但不会 因为第一个 grep 将仅输出 mp4 因此其他 2 个 grep
  • 如何查找出现在括号之间的所有单词?

    我有一个文件 其中包含括号中的一些单词 我想编制一个出现在那里的所有独特单词的列表 例如 This is some text This text has some words in parenthesis Sometimes there a
  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f

随机推荐

  • 如何使用 antd upload React 发送 multipart/form-data

    我正在使用 React 和 antd 我使用的 antd 组件是拖放 https ant design components upload 我正在尝试使用 FormData 对象发送多部分 表单数据 它发送文件 应作为 blob 发送的 z
  • 有什么方法可以更改 VSCode 中仅注释代码的字体系列吗?

    我在用户设置中遇到过这个 editor fontFamily Consolas Courier New monospace 但有什么办法只改变评论的字体吗 我在其他编辑器中看到人们有半草书评论 我希望能够复制类似的内容 您可以更改字体sty
  • .NET 中的 CoCreateInstance 完全匹配吗?

    我有进程内 DLL COM 服务器 但我选择以 DllSurrogate 身份运行 因此从非托管代码 Delphi 中我有 function TComWrapper GetServer IUnknown begin OleCheck CoC
  • 如何在Android webview中永久保存cookie?

    通过下面的代码 我已经能够保存 cookie 但是一旦我关闭应用程序 cookie 就会消失 这是如何引起的以及如何解决 package com jkjljkj import android app Activity import andr
  • 修复js“脚本错误”

    我在实现一些简单的事情时遇到困难 我有一个 index html 文件http 本地主机 3200 http localhost 3200由 ruby on Rails 编写 它使用 javascript 文件http 本地主机 8000
  • MongoDb 聚合 - 项目值作为键,相应的数组值作为值

    在 mongodb 中 运行聚合后我有一个以下形状的 get 对象 id 1 specificationList key Memory Storage Features values key Internal Storage value 3
  • KeyError:“无法打开属性(无法定位属性:'nb_layers')”

    我有一个Python代码 使用Keras 我没有发布代码 因为代码有点长 而且问题似乎与代码本身无关 这是我遇到的错误 File h5py h5a pyx line 77 in h5py h5a open D Build h5py h5py
  • 在 numpy 中获取日志返回的最有效方法是什么

    构建日志返回序列的最快且最优雅的解决方案是什么 问题主要在于映射一个函数 该函数将第 i 个和第 i 1 个元素作为数组中每个元素的输入 对于函数和简单数组 我可以定义日志返回 如下所示 import numpy as np ar np r
  • 显示哪些与特定模式匹配的文件在 git 分支之间发生了更改

    我想合并两个分支 但在此之前 我想检查文件名以以下字符结尾的所有文件上两个分支之间的更改 twig 是否可能 或者我应该使用一些 bash magic 像git diff name only branch1 branch2 grep twi
  • 为家庭作业选择 Java IDE [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 谁能推荐一个轻量级的 Java IDE 不需要您每次编译和运行程序时都创建新项目 我只想能够打开jav
  • 意外的 身体行为,因为它被孩子的 margin-top 向下推 [重复]

    这个问题在这里已经有答案了 HTML 问题看起来总是那么简单 以至于我几乎觉得问这些问题很尴尬 但不管怎样 我不知道为什么会发生这种情况 在这个小提琴里http jsfiddle net o5ee1oag 2 http jsfiddle n
  • 单击回收器视图

    有谁用过RecyclerView找到了一种方法来设置onClickListener到项目中的RecyclerView 我想过为每个项目的每个布局设置一个监听器 但这似乎有点太麻烦了 我确信有办法RecyclerView聆听onClick事件
  • NodeJS TLS会话ID

    我正在使用 TLS 使用 node js 库创建会话 Node js 是否提供了一种方法来检索已建立的 TLS 连接的会话 ID 它是 openssl 中 SSL ctx 的一部分 不使用 connect express 或geddy 可以
  • WPF 复选框内容不正确

    我的问题是我的复选框内容不显示下划线或 象征 我读过有关RecognizeAccessKey属性 但我无法让它工作 我的列表框如下所示
  • C# 构造函数不能调用自身

    构造函数 Delay vkMessages vkMessages string System DateTime string bool string 无法调用自身 我有另一个类 该类的副本 但它可以工作 我可以添加代码 我如何解决这个问题错
  • 尝试以特殊行为渲染 Threepenny-gui 中的字段

    我想要做的是设置字段 当它们处于焦点时显示详细信息 而当它们不处于焦点时显示摘要 例如 A 当它失去焦点 变得模糊 时 我将值保存在 状态 映射中 然后将该值更改为旧值的函数 即汇总值 b 当它获得焦点时 我用我在地图中保存的旧值替换摘要值
  • Emacs 关于 python 模式函数的默认提示

    在 python 模式下 有一个名为 py execute region 的函数 它将突出显示的代码区域发送到 Python 缓冲区进行评估 评估后 光标位于 Python 缓冲区中 但我希望它保留在脚本缓冲区中 以便我可以继续生成更多代码
  • 如何仅使用 jQuery 垂直调整 DIV 大小 - 无需插件?

    Edit 我把这段代码放在jsbin中 http jsbin com eneru http jsbin com eneru 我试图让用户使用 jQuery 调整 DIV 元素的大小 仅垂直 我读到了有关 jQuery UI 的内容 我尝试了
  • 某些 exe 中的 OpenFileMapping 访问被拒绝

    我有一个程序使用写入变量 CreateFileMapping INVALID HANDLE VALUE NULL PAGE EXECUTE READWRITE 0 sizeof data Local testtest 然后我将 dll 加载
  • 将文件列表传递给 grep

    我有一个文件中的文件列表 该列表很大 并且文件名是非标准的 这意味着 有些文件名包含空格 非 ascii 字符 引号 单引号 所以 通过那个huge不能选择将文件列表作为 grep 参数 因为我不确定我不会超过linux允许的参数长度 我想