我一直在寻找如何在 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"
。