Если ваш rename
не поддерживает -N
, вы можете сделать что-то вроде этого:
ls -1 -c | xargs rename -n 's/.*/our $i; sprintf("%04d.jpg", $i++)/e'
Редактировать Чтобы начать с данного числа, вы можете использовать приведенный ниже (несколько уродливый) код, просто замените 123 на желаемое число:
ls -1 -c | xargs rename -n 's/.*/our $i; if(!$i) { $i=123; } sprintf("%04d.jpg", $i++)/e'
Это перечисляет файлы в порядке по времени создания (сначала самое новое, добавьте -r
в ls для обратной сортировки), а затем отправляет этот список файлов для переименования. Rename использует Perl-код в регулярном выражении для форматирования и увеличения счетчика.
Однако, если вы имеете дело с изображениями JPEG с информацией EXIF, я бы порекомендовал exiftool
Это из документации exiftool , в разделе «Примеры переименования»
exiftool '-FileName<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e dir
Rename all images in "dir" according to the "CreateDate" date and time, adding a copy number with leading '-' if the file already exists ("%-c"), and
preserving the original file extension (%e). Note the extra '%' necessary to escape the filename codes (%c and %e) in the date format string.