~/blog/modifying-linux-file-modification-and-creation-dates-in-bash
Published on

Bash ファイルの更新日時(mtime)や作成日時(ctime)を変更する

1706文字3分で読めます–––
閲覧数
Authors
  • avatar
    Name
    Shou Arisaka nyapp.buzz/shou
    short bio
    Z世代の情報技術者。Next.jsで自作SNSを個人開発中。

LinuxコマンドラインのBashにおいて、ファイルの更新日時(mtime)や作成日時(ctime)を変更する方法について紹介します。

ファイルの更新時刻をファイルへの書き込みやアクセスなしで行いたい場合があります。

と言っても、ファイルの更新をprintfやechoで行うことはできないっぽいですので、文字を加えて削除するとか面倒なことをしない限りは今回説明する方法を取ったほうが良さそうです。

# ファイルに改行が追加されてしまう
echo "" >> "${TIME_MANAGEMENT_DIR}/time_management.txt"


# ファイルに変更は加えられないが、更新日時も変更されない。
printf "" >> "${TIME_MANAGEMENT_DIR}/time_management.txt"

まずはstatでファイルの現在の更新日時やアクセス日時を確認してみます。

$stat  "${TIME_MANAGEMENT_DIR}/time_management.txt"
  File: '/mnt/c/time_management/time_management.txt'
  Size: 385             Blocks: 0          IO Block: 4096   regular file
Device: 11h/17d Inode: 336362597169482697  Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/    yuis)   Gid: ( 1000/    yuis)
Access: 2019-06-29 14:59:40.666044600 +0900
Modify: 2019-06-29 14:59:40.666044600 +0900
Change: 2019-06-29 14:59:40.666044600 +0900

アクセス日時の変更をするには、touch -aを使用します。

$ /bin/touch -a --date="@1561788231" "${TIME_MANAGEMENT_DIR}/time_management.txt"

# // `1561788231` ... `date +%s`
$ /bin/touch --help
-a                     change only the access time
-d, --date=STRING      parse STRING and use it instead of current time
-m                     change only the modification time

変わりましたね。

$ stat "${TIME_MANAGEMENT_DIR}/time_management.txt"
  File: '/mnt/c/time_management/time_management.txt'
  Size: 385             Blocks: 0          IO Block: 4096   regular file
Device: 11h/17d Inode: 336362597169482697  Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/    yuis)   Gid: ( 1000/    yuis)
Access: 2019-06-29 15:03:51.000000000 +0900
Modify: 2019-06-29 14:59:40.666044600 +0900
Change: 2019-06-29 15:04:49.266605100 +0900
 Birth: -

上記と同様に、更新日時はtouch -mを使用します。

/bin/touch -m --date="@$( date +%s )" "${TIME_MANAGEMENT_DIR}/time_management.txt" 
Linux - Fake File Access, Modify and Change TimeStamps - ShellHacks
avatar

Shou Arisaka

情報技術者 / Z世代プログラマー / SaaSアプリやSNSを開発
今すぐ話そう!

15歳でWordPressサイトを立ち上げ、ウェブ領域に足を踏み入れる。翌年にはRuby on Railsを用いたマイクロサービス開発に着手し、現在はデジタル庁を支えたNext.jsによるHP作成やSaaS開発のプロジェクトに携わりながら、React.js・Node.js・TypeScriptによるモダンなウェブアプリの個人開発を趣味でも行う。
フロントエンドからバックエンドまで一貫したアジャイルなフルスタック開発を得意とし、ウェブマーケティングや広告デザインも必要に応じて担当、広告運用・SEO対策・データ分析まで行う低コストかつ高品質な顧客体験の提供が好評。
国内外から200万人を超える人々に支えられ、9周年を迎えるITブログ「yuipro」の開発者、デザイナーでありライター。現在ベータ段階の自作SNS「nyapp.buzz」を日本一の国産SNSとするべく奮闘中。

Created with Fabric.js 5.2.4 何かご質問がありますか?