Как переименовать расширение файла к нижнему регистру?

Я знаю, что этот вопрос задали (и ответили), прежде, но кажется, что моя ситуация уникальна, потому что у меня не может быть ни одного решения работать.

При выполнении я должен переименовать все свои фотографии от *.JPG кому: *.jpg.

Скажем, мне не нужно рекурсивный, просто все изображения в той же папке.

Проблема, которую я встречаю, является этим:

mv: ‘P1010521.JPG’ and ‘p1010521.jpg’ are the same file

То же использование задач переименовывает с такой командой:

rename 's/\.JPG$/.jpg/' *.JPG
P1020558.JPG not renamed: P1020558.jpg already exists
6
задан 13 April 2017 в 05:23

4 ответа

Это действительно просто:

  1. Переименовывают к чему-то еще, чем то же значение с различным случаем

    rename 's/\.JPG$/\.jpgaux/' *.JPG
    
  2. Теперь переименовывает это что-то еще к .jpg назад снова, но нижний регистр на этот раз

    rename 's/\.jpgaux$/\.jpg/' *.jpgaux
    

Демонстрация: http://paste.ubuntu.com/8853245/

Источник: , Как изменить расширение нескольких файлов из командной строки? Благодаря Chakra!

13
ответ дан 23 November 2019 в 07:19

Это работает лучше всего, я думаю, поскольку поддержки жемчуга, выполняющие код в regex

rename -n 's/(\.[A-Z]+$)/lc($1)/ge' *.*[A-Z]*

, удаляют -n для фактического переименования файлов

1
ответ дан 23 November 2019 в 07:19

ЕСЛИ KasiyA является правильным в его комментарии, и я думаю, что он, проблема OP состоит в том, что уже существует столь же именованный файл. Если это так, сценарий должен будет проверить, существует ли целенаправленное имя файла (нижний регистр) уже, и (только) если так, переименуйте исходный файл дополнительно (не только строчное расширение) для предотвращения ошибки имени, например.

image1.JPG

кому:

renamed_image1.jpg

с тех пор image1.jpg повысил бы ошибку

Если так, решение для Python переименовать могло быть:

#!/usr/bin/env python3

import os
import shutil
import sys

directory = sys.argv[1]
for file in [f for f in os.listdir(directory) if f.endswith(".JPG")]:
        newname = file[:file.rfind(".")]+".jpg"
        if os.path.exists(directory+"/"+newname):
                newname = "renamed_"+newname
        shutil.move(directory+"/"+file, directory+"/"+newname)

Сценарий переименовывает:

image1.JPG -> image1.jpg

но если image1.jpg уже существует:

image1.JPG -> renamed_image1.jpg

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

Скопируйте сценарий в пустой файл, сохраните его как rename.py, сделайте это исполняемым файлом и выполните его командой:

<script> <directory_of_files>
2
ответ дан 23 November 2019 в 07:19

очень просто с mmv:

sudo apt install mmv

mmv \*.JPEG \#1.jpeg
1
ответ дан 19 December 2019 в 02:40

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

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