Переименование изображений в определенном порядке

8

Это моя проблема: у меня есть папка с 500 изображений с именем:

1.jpg
2.jpg
3.jpg

и так далее..

Я скопировал эту папку, и теперь мне нужно переименовать те же картинки с 501 на 1000, но в следующем порядке:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Когда я использую мою стандартную команду переименования:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Он заказывает изображения от 501 до 1000, но все они разбросаны:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(они в правильном порядке, но это смешивает их)

Я знаю, что это, вероятно, одна команда, которую я пропускаю ...

болеутоляющее
источник
Используйте 2 переменные i и j mv $ i.jpg $ j.jpg и увеличивайте свои переменные.
Пантера
спасибо, надеюсь, вы поймете это. Я искал, но не нашел ответа ..
Painkiller
Просто любопытно, оригинальные имена, в каком диапазоне они? Должен ли оригинальный номер быть переименован в + 500?
Джейкоб Влейм
Да, Джейкоб, ты +500. Я пытаюсь написать то, что сказал мне Бодхи, но я не так хорош в lnux, я убил себя, чтобы написать команду переименования выше: D
Painkiller
Мой бедный ноутбук сильно занят банкоматом, но если не получится удовлетворительного ответа (в чем я сомневаюсь :)) и если вам не удастся, я сегодня вечером выложу крошечный скрипт на python.
Джейкоб Влейм

Ответы:

7

Попробуйте Thunar , который является файловым менеджером по умолчанию для Xfce. Это очень легкий и поставляется с удобным инструментом переименования. Вы можете установить Thunar, выполнив в терминале следующую команду:

sudo apt-get install thunar

Вы, вероятно, сможете установить и из Ubuntu Software.

Как пользоваться утилитой

  1. После установки Thunar запустите утилиту Bulk Rename .
  2. Нажмите на значок + и добавьте файлы, которые вы хотите переименовать в правильном порядке.
  3. Нажмите на раскрывающееся поле под списком выбранных файлов и выберите Нумерация . Нажмите на поле рядом с ним и выберите Только имя .
  4. В поле « Начать с: » введите 501, оставьте поле « Текст: » пустым. Вы должны увидеть предварительный просмотр изменений в столбце « Новое имя» .
  5. Чтобы применить изменения, нажмите кнопку « Переименовать файлы» .

Помимо нумерации эта утилита поддерживает следующие действия:

  • Введите дату / время
  • Вставить / перезаписать
  • Удалить персонажей
  • Поиск и замена
  • Верхний регистр Нижний регистр
pomsky
источник
Спасибо человек, ты MVP! Я только должен добавить, что мне также нужно было изменить текстовый формат на: Текст - Число. (на всякий случай, если кто-то еще использует это)
Painkiller
2
Переключить fm на ... выполнить простое задание кажется мне излишним. Написание простого расширения для скрипта наутилуса занимает меньше времени, чем переключение fm.
Джейкоб Влейм
1
@JacobVlijm Я использую Thunar только для инструмента массового переименования вместе с Nautilus. Thunar довольно легкий и, похоже, не вызывает конфликтов с Nautilus или другими файловыми менеджерами.
Помский
4
Если вам не нужен второй файловый менеджер, он pyrenamerотлично работает, и это то, что я использую для переименования бункеров, когда я хочу, чтобы графический интерфейс сравнивался до / после вывода.
Том Броссман
13

findКоманда находит файлы в каталоге «» порядка ( 23.jpg, 66.jpg, ...). Вы можете положить |sortпосле найти.

Но ваши методы слишком сложны.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 
waltinator
источник
3
for i in {1..500}; do ...было бы легче.
Дэвид Фёрстер
5

Если я правильно понял, что вы спрашиваете, думаю, вы можете сделать это, используя инструмент переименования по умолчанию:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

Вы должны удалить -vnпереключатель (многословно - без действий) после тестирования, чтобы изменения вступили в силу.

sempaiscuba
источник
Как можно установить этот инструмент в Ubuntu? по умолчанию renameсвязан prename(1)с perlпакетом, который не поддерживает все эти параметры командной строки.
Дэвид Фёрстер
@DavidFoerster Вы можете быть правы. Я не смог найти текущую ссылку для установки (я не использовал ее с 2014 года). С инструментом переименования по умолчанию, я думаю, выражение должно быть 's/^(\d+)/sprintf("%d",$1+500)/e'. Я обновлю свой ответ соответственно. Спасибо.
sempaiscuba
1
Ваш ответ теперь дубликат AFSHIN .
Дэвид Фёрстер
@DavidFoerster Извините, что ответите? Единственные другие ответы, которые я вижу, - это pomsky & waltinator. Не используйте переименование (любая версия).
sempaiscuba
Прямая ссылка на ответ, который я имею в виду, включена в мой предыдущий комментарий.
Дэвид Фёрстер
0

Еще один способ добиться этого с помощью просто команды оболочки

count = 1; для i in ls; do mv $ i CN $ ((count ++)). $ {i ## *.}; сделанный

aneeshep
источник