Пакетное переименование фотографий по дате создания в 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".

Связанный контент