在 Mac OS X 上使用 Bash 按创建日期批量重命名照片(不支持空格)

在 Mac OS X 上使用 Bash 按创建日期批量重命名照片(不支持空格)

我一直在寻找如何在 Mac OS X 上批量重命名照片的解决方案。我找到了许多解决方案,但如果文件中有空格或者我想在文件名中放一个空格,那么大多数解决方案都不起作用。

例如我发现了这个脚本:

for i in *.jpg; do newname=$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- $i); mv -- $i $newname.jpg; done

只要我不在最终文件名中添加空格,该脚本就可以正常工作(我确实希望文件名中有一个空格,因为过去 3 年我在 Windows 上一直在用空格重命名文件)。如果文件本身有空格,它也会中断。所以如果我有一张名为“Hello World.jpg”的照片,它将不会被处理。

有人能解决这个问题吗?最好不需要任何额外的软件(我只是希望每次切换机器时都能复制/粘贴该脚本)。

谢谢你!

答案1

您需要在替换中使用引号:

for i in *.jpg; do newname="$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- "$i")"; mv -- "$i" "$newname.jpg"; done

它需要双引号才能允许变量和$()扩展。

答案2

$i通常用替换就足够了"$i"

相关内容