ユニックス系のファイルのタイムスタンプを変更する方法
UNIXシステムでファイルのタイムスタンプを変更する方法が2種類あります。
- touchコマンドでは、ファイルのアクセス日時と更新日時の変更や、存在しないファイルの作成などが可能です。一般的なオプションとして、アクセス日時のみの変更に使用する「-a」、更新日時のみの変更に使用する「-m」、任意の時刻を指定する「-d」などがあります。たとえば、file.txtの更新日時を現在時刻に変更する場合は、以下のようにコマンドを実行します。
touch file.txt
ファイルfile.txtのタイムスタンプを特定の時刻、例:2022/05/01 12:30に変更するには、以下のコマンドを実行します。
touch -d "2022-05-01 12:30" file.txt
- utime関数の利用:utime関数はUNIX系のオペレーティングシステムで利用できるシステムコールの一つで、ファイルの最終アクセス時刻と最終更新時刻を変更することができます。utime関数はファイルのパスとutimbuf構造体へのポインタを引数として受け取ります。utimbuf構造体は新しいアクセス時刻と更新時刻を格納します。例えば、C言語でutime関数を利用してファイルの最終更新時刻を変更する場合は以下のようになります。
#include <sys/types.h>
#include <utime.h>
int main()
{
struct utimbuf timebuf;
timebuf.actime = time(NULL); // 设置新的访问时间为当前时间
timebuf.modtime = time(NULL); // 设置新的修改时间为当前时间
int result = utime("file.txt", &timebuf); // 修改文件的时间
if (result == -1)
{
perror("utime");
return 1;
}
return 0;
}
これらの手法は、具体的なニーズに合わせて選択して使用できます。