![为目录中的所有文本文件添加值](https://linux22.com/image/490032/%E4%B8%BA%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E6%B7%BB%E5%8A%A0%E5%80%BC.png)
我想添加一行内容,比如
This is a test 23
到目录内的所有文件。内容将作为第一行添加到文件。目录中大约有 800 个文件。有没有比编写一些 perl 命令或 bash 脚本更简单的方法来实现这一点?
答案1
您将必须使用一些代码,但不是很多:
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
首先重命名文件的原因是同时读取和写入同一个文件可能会导致问题(至少对我来说是这样)。
您需要在其中添加测试以确保在删除旧文件之前新文件已正确创建。
答案2
答案就在 Stack Overflow 上:
https://stackoverflow.com/questions/520742/prepend-to-multiple-files-in-bash-osx-terminal
答案3
如果您只是将其附加到文件末尾,则可以使用类似下面列出的 bash 代码轻松完成。
for i in *.txt
do
echo "This is a test 23" >> $i
done
答案4
perl 是最简单的方法。例如:
perl -n -i -e 'local $/ ; 打印“这是一个测试 23\n$_”;' *.txt