ファイルの更新日時を2日後に変更する
2008/02/20
あまり、需要のある操作ではないですが、ファイルの更新日時を現在の更新日時の2日後に変更するということを、zshとunixコマンドの範囲でやってみました。(環境はcygwinで作業しました)
ファイルの日付を取得する
$ ls -l --time-style=long-iso filename | awk '{print $6 " " $7;}'
もっと良い方法がありそうだけど、awkで切りだしました。cutの方がよかったかな?
2日後の日付を取得する
$ date --date '2007-12-28 12:41 2days' --rfc-3339=seconds
–dateオプションに、元の日付と ‘2days’を繋げて指定すると、2日後の日付になるようです。 –rfc-3339=secondsは、出力形式の指定です。
更新日時を更新する
$ touch -d '2007-12-30 12:41:00+09:00' filename
これは普通に
これらを組み合わせて、カレントディレクトリ配下の全てのファイルの更新日時を2日後に変更する
$ foreach f in $(find . -type f) > touch -d "$(date --date "$(ls -l --time-style=long-iso $f | awk '{print $6 " " $7;}') 2days" --rfc-3339=seconds)" $f > end
結論
perlでやった方が簡単だと思う。
touch って、空ファイル作る為だけに使ってたんですが、
本来はタイムスタンプ変更のコマンドなんですよね。。。
ども、id:momiage3dauさん
ファイルの更新日時を変更したい場面が少ないからね。操作手順の中に、touchが出てくる時は決まって空ファイル作成のためだし。unixのコマンドには、先人の知恵が詰っているから、ふと興味深いなと思うことは多いですね。