这是一个与此类似的问题。
但是我不擅长shell脚本,所以还是想请你帮忙……
我的情况有点不同:日期字符串在文件中。
这些文件(超过 700 个)被命名为 msg00000.html 到 msg00721.html。每个都有这样的一行:
<li><em>Date</em>: Thu, 22 Jul 2010 00:44:57 +0800</li>
经过大量的谷歌搜索,我终于用这个找到了它们:
grep "<li><em>Date" msg00000.html | cut -d' ' -f2-7 | tr -d "</li>"
输出正是我想要的:
Thu, 22 Ju 2010 00:44:57 +0800
而且我知道使用touch -md "Thu, 22 Ju 2010 00:44:57 +0800" msg00000.html
可以修改mtime。
但是,有人可以帮我将它们组合在一起吗?并为 723 个文件执行此操作...
谢谢...
编辑
好吧,我终于想出了如何:
for f in *.html; do touch -md "$(grep '<li><em>Date' $f | cut -d' ' -f2-7 | sed 's/<\/li>//')" "$f"; done
这是一个很长的命令...
实际上问题出在tr
命令中。它在使用时删除所有字符-d
,而不是模式。所以日期Thu, 22 Ju 2010 00:44:57 +0800
是错误的。应该是Thu, 22 Jul 2010 00:44:57 +0800
。是的,缺少一个“l”,已被tr -d
. 哈哈。