Mac OS更改创建和文件夹的上次修改日期

Sin*_*ico 6 macos

在Mac OS中更改文件夹(和递归包含的项目)的创建和最后修改日期的最简单方法是什么?

Fah*_*kar 16

我不确定这是小牛队的问题还是什么,但是touch -mt或者touch -t只是更新修改后的和上次打开的时间.

也许touch -mtOR touch -t命令与10.8.4及更早版本一起使用.

对于小牛队,我找到了如下解决方案.

SetFile -d '12/31/1999 23:59:59' file.txt
            MM dd yyyy hh mm ss  fileName
Run Code Online (Sandbox Code Playgroud)

要更新文件夹中的所有文件,请使用

SetFile -d '12/31/1999 23:59:59' *
Run Code Online (Sandbox Code Playgroud)

参考


anu*_*ava 8

我相信以下find/touch应该有效:

find /target/dir -exec touch '{}' \;
Run Code Online (Sandbox Code Playgroud)

来自man touch:

touch -- change file access and modification times
Run Code Online (Sandbox Code Playgroud)

  • 这不会更改Finder报告的创建日期,只会更改修改日期(在OS X 10.9.1上观察). (6认同)

ins*_*ere 7

最简单的方法是使用终端:

// to change the creation date
touch -mt 201308030000 [pathtofile][filename]

// to change the modified date
touch -t 201308030000 [pathtofile][filename]
Run Code Online (Sandbox Code Playgroud)

日期/时间字符串是这样构建的:

  • YYYY
  • MM
  • DD
  • 小时......
  • 分钟mm

编辑

对于递归部分,请使用anubhava在其答案中建议的内容:

find [path] -exec touch -t 201308030000 {} \;
Run Code Online (Sandbox Code Playgroud)


Kir*_*ran 5

对于那些没有安装XCode或开发者工具而无法使用的人SetFile,请参阅下文

  1. touch -m abc.txt设置当前时间为abc.txt的修改时间
  2. touch -mt YYYYMMDDhhmm abc.txt设置 YYYYMMDDhhmm 为 abc.txt 的修改时间
  3. touch -t YYYYMMDDhhmm abc.txt将 YYYYMMDDhhmm 设置为 abc.txt 的访问时间和修改时间
  4. 更重要的是,touch命令并不是为了更改文件创建时间而设计的。看来,创建时间并不是UNIX的概念。touch用于更改文件访问和修改时间。请参阅的手册touch

那么为什么touch只改变创建时间几次呢?原因是修改时间不能小于创建时间。因此,当我们将修改时间设置为创建时间之前的日期时,创建时间也会设置为修改时间。现在有两件事。

  1. touch -t设置为比创建时间更早的日期,将创建和修改时间设置为更早的日期。
  2. touch -t到比创建时间更新的日期,仅将修改时间设置为更新的日期。创建时间将不受影响。可以通过 达到最佳创建时间cp oldfile newfile,因此newfile将当前时间作为创建时间,然后可以再次减少touch -t

SetFile适合任何日期。如果它不被PATH用作
xcrun SetFile -d '12/31/2099 23:59:59' abc.txt