将值添加到目录中的所有文本文件

我想添加一些内容,说

This is a test 23 

到目录中的所有文件。 内容将作为第一行添加到文件中。 目录中有大约800个文件。 有没有比编写一些Perl命令或bash脚本更容易的方法吗?

你将不得不使用一些代码,但不是很多:

 for I in `ls *.txt` do mv ${I} ${I}.tmp cat ${I}.tmp | awk 'BEGIN {print "Test to add"} {print $0}' > ${I} rm ${I}.tmp done 

首先重命名文件的原因是,同时读取和写入同一个文件可能会导致问题(至less对我而言)。

您需要在那里添加一个testing,以确保新文件在删除旧文件之前正确创build。

如果你只是附加到文件的末尾,你可以很容易地使用下面列出的bash代码。

 for i in *.txt do echo "This is a test 23" >> $i done 

不,简单的bash脚本是我解决它的方法。

更具体地说,我会写一个bash脚本来调用sed来进行实际的文件编辑,但是原理就是这样。 没有一些shell代码,你将无法遍历文件列表。

perl是最简单的方法。 例如:

  perl -n -i -e'local $ /; 打印“这是一个testing23 \ n $ _”;“  *。文本 

sed比perl和awk更加优雅,我认为:

 for i in *.txt; do sed -i '1i\ text to add ' $i done