Переименование файлов JPG в соответствии с датой создания - PullRequest
26 голосов
/ 17 января 2011

Я хочу переименовать все файлы в определенном каталоге. Переименование их в дату их создания.
Поэтому, если мой файл - Image1.jpg, он должен переименоваться во что-то вроде «Jan 16 12:09:42 2011.jpg»
Я хочу сделать это через командную строку. Я пытался:

stat -f %SB Image0100.jpg

Но как мне совместить это с командой mv? И как я буду повторять stat и mv по всем файлам?
Или есть простые способы переименовать все файлы с их датой создания?

Ответы [ 11 ]

0 голосов
/ 17 января 2011

В MacOS X 10.6.6 с Bash (и, как мне кажется, с оболочкой Korn) это работает с именами файлов с пробелами в них:

echo > "x y"
for file in *
do
    x=$(stat -f '%SB' -t '%Y%m%d.%H%M%S' "$file")
    mv "$file" "$x"
done

В нем также используются обозначения, полученные из ISO 8601для даты и времени.Ясно, что если два файла имеют одинаковое время модификации, последний из этих файлов в алфавитном порядке будет единственным, который будет использоваться.Это также теряет любой суффикс.Если вы имеете дело с файлами «.jpg», вы, вероятно, захотите использовать:

echo > "x y,jpg"
for file in *.jpg
do
    x=$(stat -f '%SB' -t '%Y%m%d.%H%M%S.jpg' "$file")
    mv "$file" "$x"
done

Поскольку в имени вывода ($ x) нет пробелов, нет необходимости заключать в кавычки«$ x» в команде перемещения, но их присутствие соответствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...