我需要在目录及其子目录中的大量文件顶部的1个文件中插入文本。我已经能够使用ed:
逐个文件地成功完成此操作ed -s FileToAddTo.txt <<< $'0r TextToAdd.txt\nw'
但是,当我用* .txt替换FileToAddTo.txt时,没有任何反应。如何修改它,或使用其他Unix命令(如sed)以递归方式将TextToAdd.txt的内容添加到以特定扩展名结尾的目录中的所有文件?例如
ed -rs *.txt <<< $'0r TextToAdd.txt\nw'
请注意,此行上方的代码不起作用,它只是演示了我想要实现的目标。
答案 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