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

Run*_*oop 1 linux terminal command-line sed ed

我需要在目录及其子目录中的大量文件的顶部插入1个文件中的文本.我已经能够使用ed在逐个文件的基础上成功完成此操作:

ed -s FileToAddTo.txt <<< $'0r TextToAdd.txt\nw'
Run Code Online (Sandbox Code Playgroud)

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

ed -rs *.txt <<< $'0r TextToAdd.txt\nw'
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ell 5

像这样:

cat TextToAdd.txt FileToAddTo.txt > $$.tmp && mv $$.tmp FileToAddTo.txt
Run Code Online (Sandbox Code Playgroud)

即将新的头文件和原始文件放入临时文件中,然后,如果成功,则将临时文件重命名为原始文件.

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

find . -type f -name "*.txt" -exec sh -c "cat TextToAdd.txt {} > $$.tmp && mv $$.tmp {}" \;
Run Code Online (Sandbox Code Playgroud)