我有followign bash腳本來更新mtimes的郵件目錄文件:郵件目錄標題問題
#!/bin/bash
for i in /test/emailfile
do
date=$(sed -n '/Received: from/ { :a; n; /;/ {s/.*; //p;q}; b a }' "$i")
newdate=$(date -d "$date" +'%Y%m%d%H%M.%S')
touch -t "$newdate" "$i"
done
這個腳本一直運行良好,與標準的頭這樣的:
Delivery-date: Sun, 22 Apr 2007 00:15:13 -0600
Received: from an-out-0708.google.com ([209.85.132.243])
by x.xxxx.com with esmtp (Exim 4.63)
(envelope-from <[email protected]>)
id 1HfVLs-0002Io-RQ
for [email protected]; Sun, 22 Apr 2007 00:15:13 -0600
其中有一個2007郵寄日期。如果我觸摸該文件,以便文件日期從今天開始,然後運行我的腳本,則文件日期將恢復爲接收日期。
然而,當試圖用下面的標題上的電子郵件運行我的腳本:
Delivery-date: Mon, 15 Dec 2008 17:26:37 -0800
Received: from xxxxxx ([130.194.13.165])
by xxxxxxx with esmtp (Exim 4.69)
(envelope-from <[email protected]>)
id 1LCOhp-0006fm-2g
for [email protected]; Mon, 15 Dec 2008 17:26:37 -0800
的日期apparantly不會恢復。我看不出標題在任何方面都明顯不同。我需要重置mtimes,因爲許多郵件客戶端使用文件時間顯示爲從時間接收。我的腳本已處理超過3000封電子郵件,確保所有客戶端在移動服務器和具有相同日期的所有文件之後以正確順序顯示電子郵件,但出於某種原因,它不適用於特定電子郵件。我是否在腳本中留下了明顯的東西?
編輯:日期顯然是從腳本恢復的,但依賴於mtimes的客戶端不會顯示此消息,無論腳本如何設置日期。權限與佈局和文件名格式相同。以下是來自ls -la的信息
-rw-rw---- 1 username username 11769 Dec 14 21:25 1229318728.H329820P11297.xxxxx.serverxxxxx.com:2,S
-rw-rw---- 1 username username 3366 Dec 15 17:26 1229390797.H476913P25671.xxxxx.serverxxxxx.com:2,S
-rw-rw---- 1 username username 1149 Dec 22 05:39 1229953142.H901034P11016.xxxxx.serverxxxxx.com:2,S
-rw-rw---- 1 username username 7557 Dec 23 15:43 1230075791.H700954P8392.xxxxx.serverxxxxx.com:2,S
將無法正確顯示的文件是從頂部開始的第二個。有什麼方法可以調試爲什麼會發生這種情況?
是否有任何理由,如果文件的日期發生變化,客戶端將不會顯示更新的時間?或者在所有電子郵件開始時顯示的內容? – 2009-01-22 11:51:44