如何在 OSX 中按创建日期重命名文件?

Dᴀʀ*_*ᴅᴇʀ 1 macos ubuntu date

我正在寻找一种解决方案,以按创建日期yy-mm-dd而不是 Mac 和 Ubuntu 的实际日期来重命名文件。我已经知道如何使用 AppleScript 创建一个应用程序并每小时调用它,launchd当文件被发送到存储库时,Ubuntu 使用 CRON 作业进行存储,而这些文件在文件的开头没有创建日期。

我可以通过今天的日期重命名文件:

for file in *.zip; do
    mv -n "$file" "$(date +%Y%m%d_"$file")"
done
Run Code Online (Sandbox Code Playgroud)

但是当我尝试:

for f in *.zip; do
    D=$(stat -n '%Y%m%d' $f)
    mv -v "$f" "$D_$f"
done
Run Code Online (Sandbox Code Playgroud)

没发生什么事。我可以用来stat foobar.zip获取文件的日期,但是有没有办法可以为创建日期执行此操作,因此当我编写条件以测试是否不存在应用创建日期的日期时?我有点记得能够date -r在 Ubuntu 中做,但在 Mac 上不可用。我已经在 SO、AskUbuntu 和 Unix 上进行了搜索,但是我找不到可以让我选择执行此操作的解决方案。我考虑过测试statawk设置为变量D并以这种方式重命名。

Phl*_*low 5

完整示例

Amadan 的解决方案非常有帮助,当然也是正确的。也许像我一样,其他人正在寻找完成的示例。我想通了,它看起来像这样:

单线:

for f in *.jpg; do D=$(date -r $(stat -f %B $f) +%Y-%m-%d-%H-%M-%S); mv "$f" "$D-$f"; done
Run Code Online (Sandbox Code Playgroud)

可读版本:

for file in *.jpg
  do VARIABLE_DATE_OF_FILE=$(date -r $(stat -f %B $file) +%Y-%m-%d-%H-%M-%S)
  mv "$file" "$VARIABLE_DATE_OF_FILE-$file"
done
Run Code Online (Sandbox Code Playgroud)