使用 find 和 sed 将文件名添加到文件开头

2023-11-21

使用以下内容,我将文件名添加到每行的前面,并将输出发送到单个文件。

ls | while read file; do sed -e "s/^/$file/g" $file > out; done

我想执行同样的操作sed替换但使用find and exec or xargs命令 -

find . -type f -exec sed "s/^/{}/g" {} > out +

但我收到一个错误 -

find: -exec 仅支持一个 {} 实例 ... +

输入文件是这样的 -

文件A.txt

A1
A2

文件B.txt

B1
B2

期望的输出

fileA.txt A1
fileA.txt A2
fileB.txt B1
fileB.txt B2

我知道如何使用 awk 执行此操作,但我想使用 sed、find 和 exec 或 xargs 执行此操作。


 find . -type f |xargs awk '$0=FILENAME$0' > out

当我回答这个问题时,你的“no awk”行还没有出现。无论如何,看看下面我更新的答案:

根据评论更新

所以你想使用 find、exec/xargs 和 sed 来完成此操作。我的脚本需要GNU Sed,我希望你拥有它。

首先看一行:(好吧,> out被省略。您可以将其添加到该行的末尾。 )

find . -type f | xargs -i echo {}|sed -r 's#(.\/)(.*)#cat &\|sed  "s:^:file \2 :g"#ge'

现在我们来测试一下,如下:

kent$  head *.txt
==> a.txt <==
A1
A2

==> b.txt <==
B1
B2

kent$  find . -type f | xargs -i echo {}|sed -r 's#(.\/)(.*)#cat &\|sed  "s:^:file \2 :g"#ge'
file b.txt B1
file b.txt B2
file a.txt A1
file a.txt A2

结果是你所期望的吗?

简短说明

  • find ....|xargs -i echo {}没什么可解释的,只需打印 每行文件名(带前导"./")
  • 然后将文件名传递给 sed 行,例如sed -r 's#(.\/)(.*)# MAGIC #ge'
  • 请记住,在上面的行中,我们有两组\1: "./" and \2 "a.txt"(filename)
  • 因为我们有e在 sed 行的末尾,MAGIC部分是 作为 shell 命令执行。(需要 GNU sed)
  • MAGIC: cat &\|sed "s:^:file \2 :gcat & 只是输出文件 内容,并通过管道传输到另一个 sed。进行替换(s:..:..:g)
  • 最后,MAGIC的执行结果将是替换 外部 sed。

关键是 Gnu sed 的“e”。

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

使用 find 和 sed 将文件名添加到文件开头 的相关文章

  • shell 脚本中的 Telnet

    如何在 shell 脚本中运行 telnet 并在远程服务器上执行命令 出于安全原因 我没有在我的Solaris 机器上安装expect 我也没有perlnet telnet模块已安装 那么如果不使用expect和perl我该怎么办呢 我尝
  • 使用 tac 和 sed 反转文件

    我有一个用例 我需要搜索并替换文件中最后一次出现的字符串并将更改写回文件 下面的案例是该用例的简化版本 我正在尝试反转该文件 进行一些更改 再次将其反转并写入该文件 我为此尝试了以下代码片段 tac test sed s a b sed i
  • sed 将带空格的行插入到特定行

    我在开头有一行空格 例如 Hello world 我想将此行插入到文件中的特定行 例如 将 hello world 插入下一个文件 hello world result hello hello world world 我正在使用这个 sed
  • sed 替换为多行变量[重复]

    这个问题在这里已经有答案了 我正在尝试用跨多行的文本替换单词 我知道我可以简单地使用换行符 n 来解决这个问题 但我想保持字符串 干净 不包含任何不需要的格式 下面的例子显然是行不通的 read r d TEST lt
  • system 和 shell_exec 之间的区别

    有什么区别shell exec and systemPHP 中的方法 两者都采用单个命令行参数并在 PHP 中运行 使用其中一种比另一种更好吗 请参阅此处的解释 http chipmunkninja com Program Executio
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 退出代码大于 255 — 可能吗?

    如果是 在哪个操作系统 shell 或其他操作系统上 考虑以下 Java 程序 我使用 Java 只是作为示例 任何语言都适合这个问题 这更多地与操作系统有关 public class ExitCode public static void
  • 使用 sed 查找并替换包含非转义字符的变量

    我可以使用它来查找 fly 的所有实例 并将其替换为文件中的 insect sed i s fly insect g animals txt 如何找到 BASH 变量并将其替换为另一个 BASH 变量 例如 name echo fly ca
  • 将以反斜杠结尾的行与下一行 awk 连接起来(来自著名的 awk 单行解释)

    这个练习来自于Peteris Krumins 的博客文章解释了 AWK 的俏皮话 http www catonmat net blog awk one liners explained part two 本质上是这条线 awk sub ge
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 限制 jQuery id 字符串吗?

    简而言之 我的问题是字符串在 jQuery 中作为可搜索 id 或可搜索内容有什么限制 更新 我得到了 ID 部分 但不是为什么我什至无法使用该字符串搜索 html 内容 对于任何愿意告诉我一个正则表达式来将模式从 MM dd yy HH
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 如何从 LaTeX 执行 shell 脚本?

    我正在尝试在 LaTeX 中执行以下操作 documentclass article begin document execute usr local bin my shell script sh end document 想法是执行 us
  • 检查帐号是否为数字时出现语法错误

    if account nr 0 9 from account nr 0 9 这是为了检查帐号是否为数字 我收到语法错误 这个问题的早期版本缺少之间的空格if and 实际代码具有所需的空间 它显示以下错误消息 syntax error ac
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 如何用awk删除以“C”开头的行?

    如何使用以下命令从文本文件中删除以 C 开头的行awk 有什么建议请 如果数据在文件中data txt then With awk awk C data txt With grep grep v C data txt 显示开头不带 C 的所
  • 每次重新运行终端时,我都必须输入 export PATH=~/anaconda/bin:"$PATH"

    我已经安装了 Anaconda for Mac 但出现了一些问题 当我输入命令时which conda or which ipython I get conda not found and ipython not find 然后我找到这个命
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • 测试 bash shell 脚本[重复]

    这个问题在这里已经有答案了 有人可以解释一下如何测试 bash shell 脚本吗 例如 我有一个 sh 文件 其中包含此代码 bin sh for file in txt do mv file basename file txt doc

随机推荐

  • Robolectric 中的 getSystemService 返回具有 null Context 的对象

    在我的活动中onCreate I have AudioManager audioManager AudioManager getSystemService Context AUDIO SERVICE 当使用 Robolectric 测试活动
  • scipy 最小化 SLSQP - 'LSQ 子问题中的奇异矩阵 C'

    我正在尝试使用 SciPy 解决一个非常基本的优化问题 这个问题是受约束的并且具有可变范围 我很确定它是线性的 当我运行以下代码时 执行失败并显示错误消息 LSQ 子问题中的奇异矩阵 C 有谁知道可能是什么问题 提前致谢 编辑 我将在此处添
  • 如何获得动词的过去式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 获取动词过去式的最有效方法
  • 如何设置 .NET WindowsAuthentication - 当我希望它使用实际用户时,名称始终显示为“IIS APPPOOL\Classic .NET AppPool”

    我使用以下代码通过 Kerberos 进行身份验证 IntPtr logonToken WindowsIdentity GetCurrent Token string authenticationType WindowsAuthentica
  • C# 将 GMT 日期字符串解析为 DateTime

    我在用着http www eyecon ro bootstrap datepicker 插件选择日期 选择日期后我得到例如Fri Nov 01 2013 00 00 00 GMT 0100 1 如果我使用 format 设置插件 为什么我会
  • 覆盖 AngularJS URL 验证器

    AngularJS 接受这个作为有效的 URL var URL REGEXP ftp http https w 0 1 w S 0 9 w Django 接受这一点 regex re compile r http ftp s http or
  • Objective-C 中的字符串常量是如何存储/检索的?

    有人可以解释编译器在何处以及如何存储字符串常量以及运行时如何访问它们吗 首先是强制性的 你不应该关心编译器如何做到这一点 任何基于编译器如何执行此操作的行为都是对无法保证的事物的危险依赖 并且可能会根据编译器的优化方式而改变 不要基于此编写
  • jQuery 未按正确顺序执行?

    我最近开始使用 jQuery 今天注意到它对我的行为有一个奇怪的问题 据我了解 JavaScript 是单线程的 因此它的所有操作都应该以 FIFO 为基础运行 然而 对我来说情况似乎并非如此 请考虑以下事项 设置如下 HTML 3 div
  • IntelliJ 中关于 Groovy 类的“类已存在”错误

    在 IntelliJ 2016 2 及之前版本 中 我们将 Groovy 类标记为红色 并显示错误 类已存在 我认为我们可以排除存根生成的原因 因为它已被停用 可能是我们的星座引起的 我们已将编译的 groovy 和 java 类包含在注册
  • 为什么 Spring AOP 不在运行时编织外部 jar?

    我有一个基于 Spring 3 构建的 java 应用程序 该项目有另一个 jar 作为依赖项 该依赖项包含一个 org aspectj lang annotation Aspect类 可以说 com aspectprovider aspe
  • SonarQube 无法启动 MariaDB 10

    我在 CentOS 7 中使用 yum 安装了 MariaDB SonarQube 抛出此异常 org sonar api utils MessageException Unsupported mysql version 5 5 Minim
  • 正则表达式字边界和特殊字符

    我有一个正则表达式来转义搜索字符串中的所有特殊字符 这很好用 但是我似乎无法让它与单词边界一起工作 例如 用干草堆 add or add 和针 正则表达式 gi匹配 然而正则表达式 b gi没有 关于如何实现这项工作有什么想法吗 Using
  • 无法建立 SSL 连接,如何修复我的 SSL 证书?

    我试图wget到我自己的盒子 它不能是 wget 中的内部地址 另一位开发人员是这么说的 当我得到时 我得到这个 wget http example com 2013 03 01 15 03 30 http example com Reso
  • Java中的正则表达式用于验证用户名

    我正在尝试使用 Java 中的用户名链 规则如下 长度 gt 3 有效字符 a z A Z 0 9 点 破折号和下划线 有人可以帮我解决正则表达式吗 尝试这个正则表达式 a zA Z0 9 3
  • 使用 MVVM 上下文菜单项命令绑定 WPF

    我知道这个问题已经在许多网站和 StackOverFlow 中以不同的方式被问过很多次 但我找到的所有答案都没有帮助我 准确地说 我无法理解它们并在我的应用程序中实现 所以我想从我的应用程序中添加一些代码 以便你们可以更好地帮助我 问题陈述
  • python 中 Burrows-Wheeler 的性能问题

    我试图实施布罗斯 惠勒在Python中进行转换 这是在线课程的作业之一 但我希望我已经做了一些工作才有资格寻求帮助 该算法的工作原理如下 获取一个以特殊字符 在我的例子中为 结尾的字符串 并从该字符串创建所有循环字符串 按字母顺序对所有这些
  • 为什么inline-block会导致这个div有高度呢?

    jsFiddle Demo 我似乎无法弄清楚为什么使用display inline block会导致这个 div 当包含元素被隐藏时 元素以某种方式获得高度 这不会发生在display block html div style displa
  • 在 hadoop 中并行运行作业

    我是 hadoop 新手 我已经设置了一个 2 节点集群 如何在 hadoop 中并行运行 2 个作业 当我提交作业时 它们按照 FIFO 顺序一项一项地运行 我必须并行运行这些作业 如何实现这一目标 谢谢 MRK Hadoop 可以配置多
  • 为什么 WaitForMultipleObjects 在使用多个线程句柄时会失败?

    在下面的测试程序中 每个测试线程将其句柄添加到全局TThreadList当它开始执行时 并在执行即将结束时从同一列表中删除其句柄 此外 出于测试目的 每个线程确保在主线程锁定列表之前添加其句柄 以复制其句柄并开始等待它们完成 这些线程还确保
  • 使用 find 和 sed 将文件名添加到文件开头

    使用以下内容 我将文件名添加到每行的前面 并将输出发送到单个文件 ls while read file do sed e s file g file gt out done 我想执行同样的操作sed替换但使用find and exec or