您能否让我知道如何更改Lion中文件的创建日期。我意识到这里有touch-t命令,但是在Lion中不起作用。有几个人提到了另一种方式,但是我认为他们已经用“编码器”语言而非外行语言编写了解决方案-有人能够以外行执行的方式回答该问题吗?
非常感谢您的帮助。
您能否让我知道如何更改Lion中文件的创建日期。我意识到这里有touch-t命令,但是在Lion中不起作用。有几个人提到了另一种方式,但是我认为他们已经用“编码器”语言而非外行语言编写了解决方案-有人能够以外行执行的方式回答该问题吗?
非常感谢您的帮助。
Answers:
touch -t
通常只更改修改和访问时间。仅当目标时间早于原始创建时间时,它才会更改创建时间。
touch -t 199912312359 file.txt
touch -t $(date -jf %FT%T 1999-12-31T23:59:59 +%Y%m%d%H%M%S) file.txt
SetFile -d
总是会更改创建时间。
SetFile -d '12/31/1999 23:59:59' file.txt
SetFile -d "$(GetFileInfo -m test.txt)" file.txt
SetFile是命令行工具包的一部分,可以从developer.apple.com/downloads或Xcode的首选项下载。
+%Y%m%d%H%M.%S
(请注意分钟和秒之间的点)
在Mac OS X中,似乎有四个与文件关联的时间戳。这些时间戳并不总是彼此独立更新,而是一个可以有一些个别控制带着几分关心和利用的touch
,SetFile
和chown
(或chmod
)。为了看到这一点,让我们进行实验并在命令提示符下创建一个新文件#
:
# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
列出的第一个日期是上次访问时间(atime
),第二个是上次修改时间(mtime
),第三个是上次状态更改(ctime
),第四个是文件创建的时间(出生Btime
),请参见man lstat
。
要将访问时间(atime
)修改为指定时间,请使用:
# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
要将修改时间(mtime
)和文件创建时间()修改Btime
为指定时间,请使用:
# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt
显然,这还会自动将上次状态更改(ctime
)的时间更新为当前系统时间!
要将创建/出生时间(Btime
)仅修改为给定时间,请使用(如上述其他人所建议的):
# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
要将最后一次状态更改时间(ctime
)修改为当前系统时间,请使用例如:
# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
username
文件的所有者在哪里(由stat
或报告ls -l
)。这不会更改文件的所有权,但是会访问文件的inode并将其记录为上一次状态更改的时间。不幸的是,除了更改计算机的时间外,无法在此处明确指定时间。
总而言之,为了能够独立更改四个时间戳,可以使用一个(以最后三个为此顺序):
touch -a -tCCYYMMDDHH.SS <file>
touch -m -tCCYYMMDDHH.SS <file>
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
chown username <file>
[恢复正常系统日期](当然,已警告您重置系统日期可能不是无风险的操作。)
命令行touch
命令可在Lion中使用,但是您需要一些有关如何使用它的背景知识。
首先,您需要输入它,它不是在窗口中以图形方式运行的实用程序。您在其中输入文字的地方是一个名为Terminal的应用程序。您可以在“实用程序”文件夹中找到它,或使用Spotlight搜索来找到它。
一旦启动它,您将获得一个命令行窗口,您可以在其中键入命令。仅仅因为您正在键入并不意味着它与编码有任何关系,但是对于“老式” OS命令的新手来说,它看起来有些吓人。
因此,该命令称为touch,在命令之后您可以传递各种参数,唯一需要的一个是文件名。键入以下内容会将文件的最后修改日期设置为当前时间:
touch filename
当然,您可能需要首先找到文件,这可能需要其他命令才能找到它。在CD或更改目录命令在这里帮助:
cd ~/Desktop/files/PDFs
touch filename
或者,您可以简单地将完整路径添加到文件中,作为命令的一部分:
touch ~/Desktop/files/PDFs/filename
touch命令的更高级用法允许您指定要设置的时间,而不是使用执行时间,设置访问权限而不是修改时间等。这是-t等参数的作用。有人将时间设置为另一个文件的时间,有人将其设置为后退或按X量按时间前进(请参见此处以获取更多详细信息),例如:
touch -d '1 May 2005 10:22' file8
以下是该页面上的有用信息,也是一个很好的示例,其中包含一些技巧,适用于那些对命令行上的文件位置不满意的人
请注意,仅当在输入日期之后创建文件时,这才会更改修改日期和创建日期属性。这是因为在创建文件之前无法对其进行修改。如果在您设置的日期之前创建,则只会更改修改的日期。
如何更改文件的创建日期属性?
打开终端应用程序(
/Applications/Utilities/Terminal.app
),或者如果您愿意使用iTerm。在终端中键入此内容(不打回车/返回),以以下格式插入日期
YYYYMMDDhhmm
:touch -t 201212211111
打开“查找器”窗口,找到要修改的文件,然后将其拖放到“终端”窗口中,然后它将使用命令行术语插入文件位置。这是此时应在终端中键入的内容的示例:
touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
上例中的201212211111代表“ 2012年12月21日上午11:11
touch
修改修改日期,而不是文件的创建日期。
touch
提供的参数可以更改修改,但不能更改测试文件的创建日期。
touch
确实会根据参数修改创建日期。如果您提供的修改日期早于文件的创建日期,则创建日期将自动更改为新的修改日期值,因为在创建文件之前无法对其进行修改。
creation
日期。我能够改变access
和modified
日期为“在过去的日期”,但它并没有修改创建日期。检查手册页是否有触摸,但未提及创建日期。文件系统:Mac OS扩展(日志,加密)。使用SetFile -d "$(GetFileInfo -m test.txt)" file.txt
效果很好。