我想在多个指定类型文件的开头插入一行,这些文件位于当前目录或子目录中。
我知道用
find . -name "*.csv"可以帮助我列出我想要插入的文件。
并使用
sed -i '1icolumn1,column2,column3' test.csv可用于在文件开头插入一行,
但是现在我不知道如何将文件名从"find“命令传递到"sed”命令。
有人能给我什么建议吗?
或者有什么更好的解决办法来解决这个问题?
顺便说一句,在一行命令中这样做是有效的吗?
发布于 2013-11-12 05:56:09
尝试使用xargs将find和命令行参数的输出传递给下一个命令,此处为sed
find . -type f -name '*.csv' -print0 | xargs -0 sed -i '1icolumn1,column2,column3'另一个选项是使用-exec选项的find。
find . -type f -name '*.csv' -exec sed -i '1icolumn1,column2,column3' {} \;注意:已经观察到,xargs是一种更有效的方法,可以使用-P选项处理多个进程。
https://stackoverflow.com/questions/19921915
复制相似问题