2

我需要在目录及其子目录中大量文件的顶部插入 1 个文件中的文本。我已经能够使用 ed 在逐个文件的基础上成功地做到这一点:

ed -s FileToAddTo.txt <<< $'0r TextToAdd.txt\nw'

但是,当我用 *.txt 替换 FileToAddTo.txt 时,什么也没有发生。如何修改它,或使用另一个 Unix 命令(如 sed)将 TextToAdd.txt 的内容递归地添加到以特定扩展名结尾的目录中的所有文件中?例如

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

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

4

3 回答 3

5

像这样:

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

即将新的头文件和原文件cat成一个临时文件,如果成功的话,把临时文件重命名为原文件。

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

find . -type f -name "*.txt" -exec sh -c "cat TextToAdd.txt {} > $$.tmp && mv $$.tmp {}" \;
于 2014-04-11T16:42:08.693 回答
1

这对我来说效果很好:

$ for fn in `find . -name '*.txt'`; do; cat textToAdd.txt $fn > $$.tmp && mv $$.tmp $fn; done;
于 2017-09-22T15:52:17.567 回答
0

基于,您可以尝试:

for fn in `ls -R /folderName`; do cat "$fn" >> fileName;  done
于 2014-04-11T16:38:39.683 回答