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)
请注意,此行上方的代码不起作用,它只是演示了我想要实现的目标.
像这样:
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)