根据文件夹中最近的文件修改日期更改文件夹修改日期



我有许多项目文件夹,它们的日期都被修改为当前日期&时间不知怎么过去了,尽管文件夹里什么都没碰。我正在寻找一种方法来使用批处理小程序或其他一些实用程序,这将允许我在它上放置一个文件夹/文件夹,并将其修改日期设置为最近修改的文件夹中文件的修改日期。有人能告诉我怎么做吗?

我用的是OS X Mavericks 10.9.5。谢谢!

如果您启动一个终端,并使用stat,您可以获得所有文件的修改时间及其对应的名称,以冒号分隔,如下所示:

stat -f "%m:%N" *

1476985161:1.png
1476985168:2.png
1476985178:3.png
1476985188:4.png
...
1476728459:Alpha.png
1476728459:AlphaEdges.png

你现在可以对它进行排序,取第一行,并删除时间戳,这样你就有了最新的文件名:

stat -f "%m:%N" *png | sort -rn | head -1 | cut -f2 -d:

result.png

现在,您可以将其放入一个变量中,并使用touch设置所有其他文件的修改时间以匹配其修改时间:

newest=$(stat -f "%m:%N" *png | sort -rn | head -1 | cut -f2 -d:)
touch -r "$newest" *
所以,如果你想对任何给定的目录名都这样做,你可以在你的HOME目录下编写一个名为setMod的小脚本,像这样:
#!/bin/bash
# Check that exactly one parameter has been specified - the directory
if [ $# -eq 1 ]; then
   # Go to that directory or give up and die
   cd "$1" || exit 1
   # Get name of newest file
   newest=$(stat -f "%m:%N" * | sort -rn | head -1 | cut -f2 -d:)
   # Set modification times of all other files to match
   touch -r "$newest" *
fi

然后使其可执行,只需要一次,使用:

chmod +x $HOME/setMod

现在,您可以像这样设置/tmp/freddyFrog中所有文件的修改时间:

$HOME/setMod /tmp/freddyFrog

或者,如果你愿意,你可以从Applescript中调用:

do shell script "$HOME/setMod " & nameOfDirectory

nameOfDirectory将需要查找Unix-y(如/Users/mark/tmp)而不是Apple-y(如Macintosh HD:Users:mark:tmp)。