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


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 та збільшуйте свої змінні.
Пантера

дякую, сподіваюся, ви це зрозумієте. Я шукав, але не знайшов відповіді ..
болезаспокійливий

Просто цікаво, оригінальні назви, в якому діапазоні вони? Чи слід просто перейменувати оригінальний номер + 500?
Яків Влійм

Так, Яків, ти 500. Я намагаюся написати те, що мені сказали бодхі, але я не дуже хороший в lnux, я вбив себе, щоб написати команду перейменування вище: D
Painkiller

Мій бідний ноутбук сильно зайнятий атм, але якщо не з’явиться задоволення відповіді (в чому я сумніваюся :)), і якщо ви не впораєтеся, я опублікую крихітний сценарій пітона сьогодні ввечері.
Яків Влійм

Відповіді:


7

Спробуйте Thunar , який є файловим менеджером за замовчуванням для Xfce. Він дуже легкий і оснащений зручним інструментом для перейменування. Ви можете встановити Thunar, виконавши таку команду в Terminal:

sudo apt-get install thunar

Ви, ймовірно, зможете встановити і з програмного забезпечення Ubuntu.

Як користуватися утилітою

  1. Після встановлення Thunar запустіть утиліту Bulk Rename .
  2. Клацніть на значку + та додайте файли, які ви хочете перейменувати у відповідному порядку.
  3. Клацніть на спадному вікні трохи нижче списку вибраних файлів та виберіть Нумерація . Клацніть на поле поруч із ним та виберіть Тільки ім'я .
  4. У полі " Почати з: " введіть 501, залиште поле " Текст: " порожнім. Ви повинні побачити попередній перегляд змін у стовпці Нове ім’я .
  5. Щоб застосувати зміни, натисніть кнопку Перейменувати файли .

Крім нумерації, ця утиліта підтримує такі дії:

  • Вставити дату / час
  • Вставка / Перезапис
  • Видалити символів
  • Пошук і заміна
  • Верхня / маленька літера

Спасибі, ви, MVP! Треба лише додати, що мені також потрібно було змінити формат тексту на: Текст - Число. (про всяк випадок, якщо хтось іншим цим скористається)
болезаспокійливий

2
Переключити fm на ... виконувати нескладне завдання, мені здається непосильним. Написання простого розширення сценарію nautilus займає менше часу, ніж перемикання fm.
Яків Влійм

1
@JacobVlijm Я використовую Thunar лише для інструменту масового перейменування разом із Nautilus. Thunar досить легкий і, здається, не викликає конфлікту з Nautilus або іншими файловими менеджерами.
pomsky

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 

3
for i in {1..500}; do ...було б бджолі легше.
Девід Фоерстер


5

Якщо я зрозумів, що ви запитуєте правильно, я думаю, ви можете зробити це за допомогою інструменту перейменування за замовчуванням:

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

-vnПісля тестування слід зняти перемикач (багатослівний - без дій), щоб зміни були ефективними.


Як можна встановити цей інструмент в Ubuntu? за замовчуванням renameпов'язано prename(1)з perlпакетом, який не підтримує всі ці параметри командного рядка.
Девід Фоерстер

@DavidFoerster Ви можете мати рацію. Не вдалося знайти поточне посилання на встановлення (я не використовував його приблизно з 2014 року). За допомогою інструменту перейменування за замовчуванням я думаю, що вираженням регулярного вираження має бути 's/^(\d+)/sprintf("%d",$1+500)/e'. Відповідно оновлю відповідь. Дякую.
sempaiscuba

1
Ваша відповідь тепер є дублікатом AFSHIN .
Девід Фоерстер

@DavidFoerster Вибачте, яка відповідь? Єдині інші відповіді, які я бачу, - це Pomsky & Waltinator. Не використовуйте перейменування (будь-яка версія).
sempaiscuba

Пряме посилання на відповідь, яку я маю на увазі, міститься в моєму попередньому коментарі.
Девід Фоерстер

0

Ще один спосіб досягти цього просто командою оболонки

кол = 1; для i в ls; do mv $ i CN $ ((кол. ++)). $ {i ## *.}; зроблено

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.