linux - 将行插入多个指定文件

标签 linux shell sed

我想在多个指定类型文件的开头插入一行,这些文件位于当前目录或子目录。

我知道用

find . -name "*.csv"

可以帮助我列出要用于插入的文件。

和使用

sed -i '1icolumn1,column2,column3' test.csv

可以用来在文件开头插入一行,

但现在我不知道如何将文件名从“find”命令传递到“sed”命令。

有人可以给我任何建议吗?

或者有更好的解决方案吗?

顺便说一句,是否可以在一行命令中执行此操作?

最佳答案

尝试使用 xargsfind 的输出和命令行参数传递给下一个命令,这里是 sed

find . -type f -name '*.csv' -print0 | xargs -0 sed -i '1icolumn1,column2,column3'

另一种选择是使用 find-exec 选项。

find . -type f -name '*.csv' -exec sed -i '1icolumn1,column2,column3' {} \;

注意:据观察,xargs 是更有效的方法,可以使用 -P 选项处理多个进程。

关于linux - 将行插入多个指定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19921915/

相关文章:

linux - 如何使用 paste(1) 排列列?或者如何在 shell 中制作对齐的表格合并线?

使用管道中的文件名进行sed

c - 如何将用户重定向到我设备的网络管理界面?

linux - 跟踪 IGMP 查询的来源

c - C 中的 Readline 函数输出奇怪的结果

linux - 行尾(新行)在 bash 中转义

linux - 如何使用 linux 字符串操作从 html 文档中提取天气数据

regex - sed 正则表达式中的转义加号

linux - 如何在 DB2 V8.1 数据库服务器中设置 current_timezone?

xml - Bash 脚本查找包含特定数字范围的文件名