寻找实用程序来批量更改按升序日期时间创建的多个文件的创建/修改日期(Windows XP / 7 / Mac / Linux)

寻找实用程序来批量更改按升序日期时间创建的多个文件的创建/修改日期(Windows XP / 7 / Mac / Linux)

我正在寻找一个实用程序,可以批量/批量修改文件日期戳(修改日期和/或创建日期)到秒级精度,但按递增顺序进行,例如

File1 2012-04-18 10:21:01
File2 2012-04-18 10:21:02
File3 2012-04-18 10:21:03

我想这样做是因为我想强制 Flickr 按照特定顺序排列上传的照片。

我希望它适用于 Windows 或 Mac。我也有 Ubuntu,所以可以考虑它作为第二选择。

答案1

  • 适用于Linux / Mac,
  • 不使用人为延迟来创造时间扩散,并且
  • 使修改日期接近原始日期(我经常发现这些日期在其他情况下很方便)。

 

#!/bin/sh
REF=${1}
i=1
while [ $# -gt 1 ]; do
    if ! [ "${2}" = "${REF}" ]; then
        touch -h -r "${REF}" -d "+${i} seconds" "${2}"
        i=$((i+1))
    fi
    shift
done

只需指定文件按想要的时间顺序它将使用第一个文件的时间戳作为基础,并将一秒逐步添加到以下每个参数。

如果多次给出参考文件,它将保留其原始时间(这只是为了能够执行例如“retime 0001.jpg *”而不更改参考时间戳)。如果多次给出另一个文件,它将获取最后一个逻辑时间戳。

如果没有-htouch将取消引用符号链接,这在这种情况下很可能不是我们想要的(如果您说“符号现在怎么办?”,那么请不要担心)。

答案2

这个问题问得好,不过 Flickr 也许应该提供一些排序上传文件的选项。

对于 Windows 我建议

Nirsoft 批量文件更改器

对于 Linux,可以轻松编写 bash 脚本并利用触碰命令来更改多个文件。

touch 命令在 Mac OS X 上也可用,有人写了一个自动化任务也可以在终端上完成

FILES=./*
for f in $FILES
do
  echo "Processing $f file..."
  touch $f 
done

此 bash 脚本将按升序触碰每个文件。如果您希望每个文件都有不同的秒值,您可以在脚本中添加“sleep”。

user@computer:/tmp/data$ ls -l

total 9028
-rw-r--r-- 1 user user  428800 Apr 19 12:18 File1
-rw-r--r-- 1 user user 4338800 Apr 19 12:18 File2
-rw-r--r-- 1 user user 4438800 Apr 19 12:18 File3
-rwxrwxrwx 1 user user      78 Apr 19 12:18 fix.sh

答案3

“Nirsoft Bulk File Changer 是否会按照定义的增量逐级更改文件的日期戳?”

答案是肯定的。我对一批文件进行了同样的操作。这是可以做到的。

在 Total Commander 或 Windows 资源管理器中选择文件列表,并按所需顺序排列

单击并拉至 Nirsoft Bulk File Changer

调整第一个文件的日期时间例如:修改日期[/] 07-Apr-5 [/] 11:40:10 AM

[/] 添加 [1] [分钟]

点击[/]日期/时间序列模式

一定不要点击[] 时间以格林威治标准时间 (GMT) 为准

点击[执行]

列表中的所有苍蝇都按日期时间戳按 1 分钟的顺序进行更改。第一个文件增加了 1 分钟,第二个文件增加了 2 分钟,第三个文件增加了 3 分钟,依此类推......

相关内容