我需要在目录中的数千个文件中添加文件文本等标签,我尝试使用cat并使用
将其输出到文件流中for file in *
do
cat ../gau > temp; //gau contain format i need to append in each file
echo $file >>temp;
cat ../gau_ >>temp ;//contains </DOCID>
cat $file >>temp;
cat ../gau1 >> temp; //this contain last sentence </DOC>
cat temp > $file
done
但这样做非常慢,请告诉我一个更好,更有效的方法来做到这一点。可以使用c .how我们可以批量打开文件,然后处理它们并放回去,因为它可以加快这个过程因为打开和书写文件是我认为的瓶颈。
是否存在预制程序(有效且快速)来完成这项工作,因为我们时间稀缺。
答案 0 :(得分:0)
这是一个快速的python代码,尝试一下,它的执行速度比批处理脚本快:
import os
for dirname, dirnames, filenames in os.walk('/MY_DIRECTORY/'):
for filename in filenames:
with open(os.path.join(dirname, filename), "r+") as f:
str = f.read() # read everything in the file
f.seek(0) # rewind
f.write("Prepended text tags" + str) # write the new line before
f.close()
我没试过。
答案 1 :(得分:0)
不要cat temp > $file
,只需mv temp $file
- 您不需要重写文件,只需重命名即可。这肯定是表现不佳的原因之一
for file in *; do
{ cat ../gau; echo $file; cat ../gau_ $file ../gau1; } > temp
mv temp $file
done
您可能希望选择比“gau”,“gau_”和“gau1”更具说服力的文件名。