これは、これに似た質問です。
でも、シェルスクリプトが苦手なので、まだまだお願いしたいのですが…
私の状況は少し異なります。日付文字列はファイルにあります。
これらのファイル (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
そして、私は usetouch -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
。笑。