将trec格式标签添加到数千个文件中

时间:2011-03-15 11:37:22

标签: c shell programming-languages operating-system copying

我需要在目录中的数千个文件中添加文件文本等标签,我尝试使用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我们可以批量打开文件,然后处理它们并放回去,因为它可以加快这个过程因为打开和书写文件是我认为的瓶颈。

是否存在预制程序(有效且快速)来完成这项工作,因为我们时间稀缺。

2 个答案:

答案 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”更具说服力的文件名。