如何使用shell或perl在目录中所有.c文件的开头添加2行
我在一个目录中有很多.c文件和.h文件。我需要在所有的.c开头添加一条注释,比如“//INFO:这是raj编写的c文件”。你能告诉我如何使用脚本吗 听起来像是一次性的任务,所以一个简单的方法是这样做:如何使用shell或perl在目录中所有.c文件的开头添加2行,perl,shell,sed,Perl,Shell,Sed,我在一个目录中有很多.c文件和.h文件。我需要在所有的.c开头添加一条注释,比如“//INFO:这是raj编写的c文件”。你能告诉我如何使用脚本吗 听起来像是一次性的任务,所以一个简单的方法是这样做: 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
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
当然,请确保首先备份文件。使用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;}'
快速一行:
perl -pi -we 'local $/; s#^#//comment\n#;' *.c *.h
说明:
- 与
一起使用就地编辑(如果需要备份:-pi
, e、 g.-i
)-i.bak
- 使用slurp模式(通过将
设置为未定义来读取整个文件)将仅 影响第一行$/
- 使用shell glob查找文件
find
命令中缺少引号,并且您的sed
脚本有点乱。有一个专用的sed
命令i
用于插入一行-我当然更喜欢这样。@Raj:在路径cpath中找到所有的*.c和*.h文件以查找
并应用该命令