Как переименовать кучу файлов с помощью команд bash? [dубликат]

Это моя проблема: у меня есть папка с 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 ...

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

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

7
задан 25 August 2017 в 21:44

10 ответов

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

sudo apt-get install thunar

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

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

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

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

Вставить дату / время Вставить / перезаписать Удалить символы Поиск и amp; Заменить верхний / нижний регистр
7
ответ дан 17 July 2018 в 20:55

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

sudo apt-get install thunar

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

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

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

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

Вставить дату / время Вставить / перезаписать Удалить символы Поиск и amp; Заменить верхний / нижний регистр
7
ответ дан 23 July 2018 в 21:36

Другой способ достижения этой цели с помощью команды shell

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

0
ответ дан 17 July 2018 в 20:55

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

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

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

5
ответ дан 17 July 2018 в 20:55

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

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

for i in $( seq 1 500 ) ; do j=$(( $i + 500 )) mv $i.jpg $j.jpg done
13
ответ дан 17 July 2018 в 20:55

С командой rename.

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

Или в чистом bash и использовании расширения параметра оболочки.

for FILE in *.jpg; do mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" done
11
ответ дан 17 July 2018 в 20:55

Другой способ достижения этой цели с помощью команды shell

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

0
ответ дан 23 July 2018 в 21:36

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

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

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

5
ответ дан 23 July 2018 в 21:36
  • 1
    Как установить этот инструмент в Ubuntu? по умолчанию rename связан с prename(1) из пакета perl, который не поддерживает все эти параметры командной строки. – David Foerster 26 August 2017 в 16:45
  • 2
    @DavidFoerster Возможно, вы правы. Я не смог найти текущую ссылку на установку (я не использовал ее с 2014 года). С помощью инструмента переименования по умолчанию, я думаю, выражение регулярного выражения должно быть 's/^(\d+)/sprintf("%d",$1+500)/e'. Я соответствующим образом обновлю ответ. Благодарю. – sempaiscuba 26 August 2017 в 17:11
  • 3
    Ваш ответ теперь является дубликатом AFSHIN . – David Foerster 26 August 2017 в 17:22
  • 4
    @DavidFoerster Извините, какой ответ? Единственные другие ответы, которые я вижу, - это pomsky & amp; waltinator. Не используйте переименование (либо версию). – sempaiscuba 26 August 2017 в 17:26
  • 5
    Прямая ссылка на ответ, который я имею в виду, включена в мой предыдущий комментарий. – David Foerster 26 August 2017 в 17:28

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

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

for i in $( seq 1 500 ) ; do j=$(( $i + 500 )) mv $i.jpg $j.jpg done
13
ответ дан 23 July 2018 в 21:36

С командой rename.

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

Или в чистом bash и использовании расширения параметра оболочки.

for FILE in *.jpg; do mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" done
11
ответ дан 23 July 2018 в 21:36

Другие вопросы по тегам:

Похожие вопросы: