2011-06-28 50 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