我想在多个指定类型文件的开头插入一行,这些文件位于当前目录或子目录。
我知道用
find . -name "*.csv"
可以帮助我列出要用于插入的文件。
和使用
sed -i '1icolumn1,column2,column3' test.csv
可以用来在文件开头插入一行,
但现在我不知道如何将文件名从“find”命令传递到“sed”命令。
有人可以给我任何建议吗?
或者有更好的解决方案吗?
顺便说一句,是否可以在一行命令中执行此操作?
最佳答案
尝试使用 xargs
将 find
的输出和命令行参数传递给下一个命令,这里是 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/