Кажется, у меня все работает, попробуйте эту маленькую пустышку и посмотрите, что вы получите.
#!/bin/bash
echo '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 <xxxxxx@gmail.com>)
id 1HfVLs-0002Io-RQ
for x@xxxxx.com; Sun, 22 Apr 2007 00:15:13 -0600' | sed -n '/Received: from/ { :a; n; /;/ {s/.*; //p;q}; b a }'
date -d "Sun, 22 Apr 2007 00:15:13 -0600" +'%Y%m%d%H%M.%S'
echo '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 <xxxxxi@xxxxx.xxx.xx>)
id 1LCOhp-0006fm-2g
for xxxxx@xxxxxx.com; Mon, 15 Dec 2008 17:26:37 -0800' | sed -n '/Received: from/ { :a; n; /;/ {s/.*; //p;q}; b a }'
date -d "Mon, 15 Dec 2008 17:26:37 -0800" +'%Y%m%d%H%M.%S'
Я получаю (как и ожидалось):
Sun, 22 Apr 2007 00:15:13 -0600
200704221415.13
Mon, 15 Dec 2008 17:26:37 -0800
200812161026.37
Так что я не уверен, почему ваш не работает, хотя вывод этого скрипта должен быть хорошей отправной точкой.
Другая вещь, которую вы можете сделать, это временно изменить ваш скрипт следующим образом:
: : : : :
echo touch -t "$newdate" "$i"
touch -t "$newdate" "$i"
: : : : :
Это выведет действительную команду, которую вы пытаетесь.
Также проверьте права доступа к файлам для каталога и отдельных файлов.
Что "ls -l" (mtime) и "ls -lc" (ctime) дают вам в подозрительном почтовом файле? Возможно, ваш скрипт работает нормально, но почтовый клиент пользователя не использует mtime / ctime.
После редактирования:
Цитируя «однако клиенты, которые полагаются на mtimes, не будут отображать это сообщение независимо от того, какой сценарий устанавливает дату», я отвечаю, что клиент не полагается на mtimes.
Перефразируя самого Шерлока, как только вы устранили все другие возможности, все, что осталось, как бы маловероятно это ни было, должно иметь место. И одна вещь, которую я заметил: вы только что заявили, что сообщение не отображается вообще (или что у него неправильная дата, как я думал, о которой мы говорили)?
Если последнее, вам нужно заглянуть в почтовый клиент, чтобы увидеть, откуда он на самом деле получает свою дату. Просто ради интереса, какую дату клиент думает, что это (и соответствует ли она какой-либо дате в заголовке?
Если первое, то это другая проблема, которую мы можем обсудить.
Я думаю, что это (клиент), куда вам нужно пойти отсюда, и, поскольку мой опыт в создании сценариев больше, чем в почтовых клиентах, я не смогу помочь в дальнейшем. Тем не менее, мне интересно посмотреть, как это получится, поэтому я буду любить этот вопрос.