2011-06-28 52 views
0

* 更新7月4日 *搬家,基于内容和大小

的文本文件重命名巨额最后我做了以下内容:

  1. 排序上日期
  2. 检查最后一句是相同的
  3. 如果是:如果更大 - >这是要选择的新消息。如果更小:删除。如果找不到更多的相同内容,请选择该文件并移至其他文件夹。
  4. 如果否:继续。再次循环直到具有特定日期的所有文件都被检查过。

谢谢大家的帮助!


我忙一个大项目,我有,我有过滤的电子邮件数量巨大,通过雷鸟从Gmail导入。虽然有一个很大的问题。 因为gmail使用会话,但是thunderbird不会像这样格式化它们,我拥有的是每个电子邮件的文本文件,尽管前面的对话也是如此。所以每个reply.To澄清了一个全新的文本文件,对话的例子:

Me:Hi, how are you? 
You, replying: Good! 
Me: Great! 

在Gmail中,这看起来完全按照上面,但对我来说这是现在的3个文件:

  • 文件1:

    Me, sent at 11:41: 
    Hi, how are you? 
    
  • 文件2:

    You, sent at 11:42: 
    Good! 
    
    Me, sent at 11:41: 
    Hi how are you? 
    
  • 文件3:

    Me, sent at 11:43: 
    Great! 
    
    You, sent at 11:42: 
    Good! 
    
    Me, sent at 11:41: 
    Hi how are you? 
    

正如你可以明白了,这是3个文件没有问题:我刚刚扔掉的文件1和2,仅使用文件3.这正是我想做的事。但考虑到总共有大约3万个文件,我非常希望将其自动化。

很遗憾,不可能通过文件名来完成此操作,尽管它可以部分完成。这些文件是根据它们的日期命名的。例如:20110102为2011年1月2日。然而,由于每天有多个电子邮件对话,如果我只按日期排序并且保持最大,我会损失很多。

我希望问题很清楚,你可以帮我解决这个问题。 我在Mac OSX 10.7上工作。我试过使用Applescript,但是我的脚本不好,或者Applescript无法处理文件数量。 也许你对软件或脚本有某种建议?我向所有人开放,不熟悉编程。

在此先感谢!

+0

给出了更多详细信息,文件是如何组织的,它们是如何编号的,如果对话跨越一天以上,如何识别与相同对话匹配的所有文件... –

+1

似乎很容易在高级解决方案中排序的方式:'(1)按日期排序文件。 (2)逐日浏览所有文件,保存第一行(head -n 1)。 (3)保存与第一行匹配的先前文件的列表,当文件不匹配时,删除列表中除最后一个之外的所有文件,将新文件放入列表的开头,并将新的第一行作为您的检查。很显然,这不适用于许多并发对话,但可以扩展它。 – NorthGuard

+1

哦,我忘了,当你按日期排序时,你不会按时间排序,对不起。新的解决方案,(1)和(2)是相同的,(3)将时间和存储时间重新排列在地图中,然后检查当天的每个新文件与地图中的时间,如果文件大小是更大的,然后删除地图中的内容,并将新的文件名放在地图中,如果更小或相同,则删除地图中的内容,并将新文件名放在地图中。“虽然这是一个相当耗费时间和空间,但您只有30k个文件,如果你需要为数百万个文件做这件事,然后我会想到别的东西。 – NorthGuard

回答

2

由于您的任务基本上只是文本处理,所以您熟悉的任何语言(包括AppleScript,PHP,bash,C)都应该能够完成这项工作。我认为@InTide可能会将问题分解为谨慎的步骤,这是您需要做的,按您选择的语言一次构建一个部分。

选择一种您熟悉的语言,并开始将代码写入第一步,并确保它按预期工作,然后展开,在每个点添加一小部分新功能,并确保功能在继续之前有效。如果没有你写的代码的例子,或者更好地描述了AppleScript如何失败,额外的建议是很困难的。

+0

我完全同意使用OP最熟悉的任何语言的建议。事实上,我实际上会争论*针对这种类型的任务使用Applescript。 Applescript的一个主要弱点是其文本处理。 –

+0

感谢您的帮助(全部)! – Job