将1个文件的内容添加到另一个文件的顶部

时间:2014-04-11 16:29:33

标签: linux command-line sed terminal ed

我需要在目录及其子目录中的大量文件顶部的1个文件中插入文本。我已经能够使用ed:

逐个文件地成功完成此操作
ed -s FileToAddTo.txt <<< $'0r TextToAdd.txt\nw'

但是,当我用* .txt替换FileToAddTo.txt时,没有任何反应。如何修改它,或使用其他Unix命令(如sed)以递归方式将TextToAdd.txt的内容添加到以特定扩展名结尾的目录中的所有文件?例如

ed -rs *.txt <<< $'0r TextToAdd.txt\nw'

请注意,此行上方的代码不起作用,它只是演示了我想要实现的目标。

3 个答案:

答案 0 :(得分:5)

像这样:

cat TextToAdd.txt FileToAddTo.txt > $$.tmp && mv $$.tmp FileToAddTo.txt

即。将新的头文件和原始文件合并到一个临时文件中,然后,如果成功,则将临时文件重命名为原始文件。

并以递归方式运行!!请测试备份数据!!!

find . -type f -name "*.txt" -exec sh -c "cat TextToAdd.txt {} > $$.tmp && mv $$.tmp {}" \;

答案 1 :(得分:1)

这对我很有用:

$ for fn in `find . -name '*.txt'`; do; cat textToAdd.txt $fn > $$.tmp && mv $$.tmp $fn; done;

答案 2 :(得分:0)

根据this,您可以尝试:

for fn in `ls -R /folderName`; do cat "$fn" >> fileName;  done