在 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"

相關內容