如何根据 mac 上的创建时间重命名目录中的文件列表

How to rename a list of files in directory based on creation time on mac

我在 Mac bash 控制台上

我用谷歌搜索了很多(甚至在堆栈溢出中)并尝试了很多脚本,以便 通过 [=51] 重命名目录中的每个文件及其创建时间戳 =] 命令,但 none 有效,因为 datestat 命令在 mac 中不同于 linux。我也没有 exif 命令。

我想用这样的格式(或类似的)重命名:YYYYmmDD-HHMM

有人可以帮助我吗?非常感谢

编辑

我试过了this, this and this

编辑 2

我想用这样的格式(或类似的格式)重命名:YYYYmmDD-HHMM.jpg(jpg 是文件扩展名的一个例子,我会喜欢不丢失文件扩展名)

编辑 3

目前此命令部分有效(始终应用 jpg 扩展名)

for f in `ls`; do mv "$f" "$(stat -t %Y%m%d-%H%M $f | awk -F"\"" '{print }').jpg"; done
mv fileName `stat -f %SB -t %Y%m%d-%H%M fileName`

编辑

这里是最终解决方案,在整个文件列表中循环

for f in `ls`;
    do mv "$f" "`stat -f %SB -t %Y%m%d-%H%M $f`.`echo $f | cut -d '.' -f 2`";
done

至 prefix/prepend 文件夹中具有 创建日期 的每个文件,格式为 %Y%m%d-%H%M(例如 20200722-1352),运行 以下片段:

for filename in *; do
  mv "$filename" "$(stat -f "%SB %N" -t "%Y%m%d-%H%M" "$filename")"
done

自定义格式/了解此命令的作用:

在这种情况下,-f 参数将用作输出文件名的格式,其中 %SB %N 表示:

  • 使用S字符串输出
  • 打印B出生日期(创建时间)
  • 打印一个space
  • 打印原文件N是.

-t 参数扩展了日期格式本身。随意修改那些以满足您的需要。有关所有可能性,请参阅 manual for stat 中的 FORMATS 部分。

如果你想去掉原来的文件名只保留日期和扩展名,我们可以调整格式参数不包括文件名,并手动附加提取的扩展名${filename##*.}:

for filename in *; do
  mv "$filename" "$(stat -f "%SB" -t "%Y%m%d-%H%M" "${filename}").${filename##*.}"
done