根据文件夹中最近的文件修改日期更改文件夹修改日期
change folder modified date based on most recent file modified date in folder
我有许多项目文件夹都以某种方式将其修改日期设置为当前日期和时间,尽管文件夹中没有任何内容。我正在寻找一种方法来使用批处理小程序或其他一些实用程序,这些实用程序允许我在其上放置 folder/folders 并将其修改日期设置为文件夹中最近修改文件的修改日期.谁能告诉我该怎么做?
以防万一,我正在使用 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 "" || 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
)。
我有许多项目文件夹都以某种方式将其修改日期设置为当前日期和时间,尽管文件夹中没有任何内容。我正在寻找一种方法来使用批处理小程序或其他一些实用程序,这些实用程序允许我在其上放置 folder/folders 并将其修改日期设置为文件夹中最近修改文件的修改日期.谁能告诉我该怎么做?
以防万一,我正在使用 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 "" || 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
)。