在Mac上的下载文件夹中,文件有一个"添加日期"列。
我正在尝试创建一个脚本,将x天以上的文件移到我的垃圾文件夹中。以下操作有效,但它是基于创建/修改日期提取文件,而不是我从Finder中看到的"添加日期"。是否有显示/使用此"添加日期"字段的方法?
find/users/home/downloads-maxdepth 1-mtime+365-type f-exec mv"{}"/testination/\;
使用STAT命令,您必须列出文件名才能工作。
"添加日期";被存储在元数据属性CCD_ 1中。可以使用mdls
命令从终端检索:
mdls -name kMDItemDateAdded <filename>
会返回类似的东西
kMDItemDateAdded = 2022-01-03 16:40:14 +0000
如果添加-name kMDItemFSName
,它也将返回文件名,因此可以与文件名中的通配符一起使用(或仅使用*
(。
限制:
虽然这应该适用于问题中描述的场景,但mdls
似乎不会为排除在聚光灯搜索范围之外的文件(例如垃圾箱中的文件(返回该属性,即使它们确实具有该属性,如Finder中所示。因此,可能有一个比这个更好的答案,它涵盖了所有文件,无论它们是否在聚光灯索引中。
另请参阅如何查找文件何时被移到垃圾桶?
注意:我将留下这个答案,以防"ctime";以及";出生时间";是有用的,但评论者和这个新的答案表明,两者实际上都不总是与";添加日期";在Finder中。
在stat
结构中;添加日期";是st_ctime(它是"文件状态信息最后一次改变的时间"(;创建日期";是st_birthtime。
其他Mac(实际上是BSD(命令可以访问这两个命令中的任何一个。例如ls -ltc Downloads | head
将列出最近的";添加";文件,而ls -ltU Downloads | head
将列出最近的";创建";文件。
类似地find Downloads -maxdepth 1 -ctime -2
将找到文件";添加";在过去2天内,而kMDItemDateAdded
0将找到文件";创建";最近两天。
我怀疑你想要的命令是
find /users/home/downloads -maxdepth 1 -ctime +365 -type f -exec mv "{}" /destination/ ;
注意-ctime
的使用。