有一个文件想要修改“创建时间”和“修改时间”:

网上普遍使用类Unix系统的命令 touch 来实现(预先说明,此普遍方法无法满足修改“创建时间”的需求。后文有使用 Setfile 命令这一可行的解决方法):

touch [选项参数] <文件名>
  • -t 使用指定的日期时间,修改文件的“atime(访问时间)”,“mtime(修改时间)“。

  • -a--time=atime--time=access--time=use 只修改atime(访问时间)。

  • -m--time=mtime--time=modify 只修改mtime(修改时间)。

  • -c--no-create 不建立任何文档,此参数将修改“atime(访问时间)”,“mtime(修改时间)“,“ctime(文件属性变更时间)”。

  • -d 使用指定的日期时间,而非现在的时间。

  • -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。

  • -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。

关于Linux系统的atime(访问时间),mtime(修改时间),ctime(文件属性变更时间),后文的“附录”部分有介绍。

// 使用指定的时间(2020年02月03日12:30),修改文件的“atime(访问时间)”,“mtime(修改时间)“
touch -t 202002031230 <文件名>
// 使用指定的时间(2020年02月03日12:30),修改文件的“修改时间”
touch -mt 202002031230 <文件名>

不论是touch -t还是touch -mt,执行完毕后:

仅修改了“修改时间”,但“创建时间”还是没有被修改。

原因是:touch -t 仅会当 指定的时间 在 原始创建时间 之前时,才会修改创建时间

使用Setfile命令。

Setfile命令是一个MacOS X的开发者工具,它可以修改文件的creation(创建时间)和modification date(修改时间)。不过前提是,你的MacOS上必须已经安装了Xcode。如果没有的话,可以去Mac App Store安装。你可以在/usr/bin/SetFile位置找到此命令行工具。

Setfile -d '01/10/2020 11:00:00' <文件名>

文件的“创建时间”修改成功!

Linux | 文件的时间属性

在Linux系统下,文件的时间属性主要分为三种:

atime(访问时间):

也就是Access time。读一次文件的内容,该文件的atime就会更新。比如常见的使用more、cat对该文件进行查看时,其atime将更新。

mtime(修改时间):

也就是Modify time。对该文件进行内容上的修改,该文件的mtime就会更新。比如常见的使用vi、vim对文件进行修改后保存,其mtime将更新。

ctime(文件属性变更时间):

也就是Change time。对该文件的属性状态进行修改,改文件的ctime就会更新。比如文件名、内容、大小、权限、所属组等改变时,其ctime将更新。

ll或ls命令查看文件的时间属性
  • ll --time=atimels -lu命令查看atime(访问时间)

    `ll --time=atime`或`ls -lu`命令查看atime(访问时间)
  • llls -l命令查看mtime(修改时间)

    `ll`或`ls -l`命令查看mtime(修改时间)
  • ll --time=ctimels -lc命令查看ctime(文件属性变更时间)

    `ll --time=ctime`或`ls -lc`命令查看ctime(文件属性变更时间)
stat命令查看文件的时间属性

可以使用stat命令同时查看文件的三种属性

find命令查找特定时间要求的文件

结合find命令可以查找特定时间要求的文件,例如查询最近24小时内修改过的文件:

find ./ -mtime -24
文件创建时间

Linux常见的文件系统,没有文件创建时间属性,关于这一点,可以去网上看相关讨论。

Linux | 文件的时间属性 - 嘉为科技的文章 - 知乎

创建一个日期类,定义几个变量:年、月、日、小时、分钟、秒;构造函数的参数为System.DateTime类型,然后将值分别赋给定义的变量;然后构造两个重载方法SetTime,分别使用按值传递参数和按引用传递参数方式来对定义的变量进行计算。然后定义一个方法DisplayTime将这些变量的值输出。试比较按值传递和按引用传递这两种方式的区别。 提示:方法采用两种方式来传递参数,默认按照值传递的方式,另一种为按引用传递。方法只能有一个返回值,当然这个返回值可能是程序员定义的多个值集合的一个结构。当程序需要多于一个返回值时,如果只允许按值传递,会带来不便。而按引用传递参数,使得可以按需要同时返回的几个值都作为参数传递给方法,被调用的方法在其程序的内部对这些值做了修改后,调用者可以访问这些按引用传递的参数,来获取被调用方法计算的结果。
##修改创建日期:setfile -d mm/dd/yy hh:mm:ss filename ##修改修改日期:setfile -m mm/dd/yy hh:mm:ss filename setfile -d '1/1/2021 18:18:0' sysin.txt setfile -m '1/. 打开terminal 然后输入 "touch -mt YYYYMMDDhhmm " 不带引号, 主要让你看到有空格, 然后将所有要修改文件, 一起拖拽进来, 一个回车搞定 yyyy 年 hhmm 小时和分钟 比如 201412010
场景1.修改文件时间一般用在下载远程文件到本地时, 修改其创建时间为远程文件的原时间, 这样对文件排序查找时也方便归类. 这类文件有很多, 视频, 音频, 图片.说明1.Windows 和 macOS都有这种API, Windows以简单的C Win32 api 方式; macOS使用NSFileManager来修改.例子Windows #include <Windows.h>//2014-09-
[root@linux-node1 ~]# stat lnmp-install.log File: `lnmp-install.log' Size: 2228418 Blocks: 4368 IO Block: 4096 regular file Device: fd00h/64768d Inode...
setField() 方法用于更新个别字段的值。 setField() 方法的语法为:setField(fields, value, condition='') public function update(){ header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); $result...
Linux下,使用PyInstaller生成macOS和Windows下的可执行文件命令与在macOS下的命令基本相同。 对于生成Windows下的可执行文件,可以使用以下命令: pyinstaller --onefile yourscript.py 对于生成macOS下的可执行文件,可以使用以下命令: pyinstaller --onefile --windowed yourscript.py 需要注意的是,为了在Linux下生成Windows下的可执行文件,需要安装wine,而为了在Linux下生成macOS下的可执行文件,则需要安装相应的macOS开发环境和工具链。此外,还需要在PyInstaller的命令中添加相应的选项和参数,以确保生成的可执行文件能够在目标操作系统上正确运行。