如何使用shell或perl在目录中的所有.c文件的开头添加2行

时间:2011-10-24 03:52:23

标签: perl shell sed

我在目录中有很多.c文件和.h文件。我需要在所有.c的开头添加注释,如“// INFO:这是由raj编写的C文件”。你能告诉我如何使用脚本吗?

3 个答案:

答案 0 :(得分:5)

听起来像是一次性任务,所以一个简单的方法是做这样的事情:

for x in *.c *.h; do
    echo "//INFO This is C Files written by raj" > $x.temp-file
    cat $x >> $x.temp-file
    mv $x.temp-file $x
done

当然,请务必先备份文件。

答案 1 :(得分:3)

使用sed

find cpath-to-find -type f -name '*.c' -o -name '*.h' -execdir \
 sed '1i\//INFO This is C Files written by raj' {} \+

使用awk

find cpath-to-find -type f -name '*.c' -o -name '*.h' -execdir \
awk ' NR == 1 { print "//INFO This is C Files written by raj"; } {print;}'

答案 2 :(得分:2)

快速单行:

perl -pi -we 'local $/; s#^#//comment\n#;' *.c *.h

说明:

  • 使用-pi进行就地编辑(如果您想要备份:-i<extension>, 例如-i.bak)。
  • 仅使用slurp模式(通过将$/设置为undef来读取整个文件) 影响第一线。
  • 使用shell glob查找文件。