Переименовать большую папку в формате JPEG - PullRequest
1 голос
/ 12 июня 2019

У меня есть большая папка в формате JPEG, которую я хотел бы последовательно переименовать в image01.jpg, image02.jpg ... image533jpg и т. Д.

Я пытался использовать следующее

find ‘/myImages/‘ -maxdepth 1 -name ‘*.jpg’ | sort -n | awk 'BEGIN{ x=1 }{printf "mv \"%s\" \”/myImages/image%04d.jpg\”\n”, $0, x++ }' | bash

который я получил отсюда: http://www.algissalys.com/how-to/how-to-quickly-rename-modify-and-scale-all-images-in-a-directory-using-linux

Однако, это только возврат

>

И тогда ничего не происходит, любые предложения будут великолепны.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Самый простой способ сделать это с помощью rename, который можно установить с помощью homebrew , используя:

brew install rename

Затем вы можете зайти в свой каталог с изображениями и запустить:

rename --dry-run -X -e '$_ = "$N"' *jpg

Пример вывода

'a.jpg' would be renamed to '1.jpg'
'article.jpg' would be renamed to '2.jpg'
'blob-0.jpg' would be renamed to '3.jpg'
'blob-1.jpg' would be renamed to '4.jpg'
'blob-2.jpg' would be renamed to '5.jpg'
'blob-3.jpg' would be renamed to '6.jpg'

Если это выглядит правильно, вы можете запустить его снова без --dry-run, чтобы фактически сделать это, вместо того, чтобы просто сказать вам, что он будет делать.


Если вы хотите, чтобы ваши имена были дополнены нулями, самое простое - позволить rename автоматически определить, сколько отступов вам нужно, например:

rename --dry-run -X -N ...01 -e '$_ = "$N"' *jpg

Преимущества использования rename заключаются в следующем:

  • это просто и мощно
  • предупредит вас перед перезаписью файлов
  • он может выполнить пробный прогон и сказать вам, что произойдет, фактически ничего не делая

Если вам нужно объяснение команды '$_ = "$N"', тогда читайте дальше ...

Команда rename на самом деле является сценарием Perl, поэтому часть, о которой я упоминал выше, является просто сценарием Perl, заключенным в одинарные кавычки. $N - это просто переменная Perl, которая расширяется до последовательно увеличивающегося числа. Специальная переменная Perl $_ заполняется именем текущего файла перед выполнением вашего маленького Perl-скрипта, и, что самое важное, вы должны установить для него имя, которое вы хотите, чтобы входной файл был переименован в.

1 голос
/ 13 июня 2019

Вы можете сделать это с помощью bash-скрипта.Скажем, у вас есть следующее в файле с именем rename_images.

#!/bin/bash
declare -a FILESERIES

FILESERIES=(`ls $1`)
NUM=${#FILESERIES[@]}
NEWNAME=$2
EXT=$3

for (( i=0; i<$NUM ; i++))
do
    FI=${FILESERIES[$i]}
    NEWFILENAME=`echo $NEWNAME$i$EXT`
    mv $FI $NEWFILENAME
done

Чтобы сделать то, что вам нужно, запустите скрипт из папки со всеми изображениями следующим образом:

./rename_images '*.jpg' image .jpg

И вы должны быть отсортированы.

...