批量在文件头插入

最近在整理一套古董代码,古董代码很多头文件stdio.h stdlib.h string.h都没有显示的引用,在gcc上编译总是报错,但是要一个个文件去添加头文文件是件很繁琐的事情,有没有办法一次性把所有的文件都加上这些头文件的引用呢?

当然是可以的,首先我们需要用sed,sed在一个文件头插入一段文字可以下面这样使用

$ sed -i '1s/^/added text /' filename

但是当靠sed一次只能修改一个文件,这时候我们就需要find以及xargs
用find把所有的cpp文件都检索出来(这里个人建议把这些头文件包含到.cpp中而不是.h中因为这些库函数是在实现的时候需要用到的,而不需要在接口中暴露出来),

$ find . -name "*.cpp"

之后再用xargs把两个命令串起来就可以了

$ find . -name "*.cpp" | xargs sed -i '1s/^/added text /'
or
$ sed -i '1s/^/added text /'  `find . -name "*.cpp"`

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.