Я знаю, что этот вопрос задали (и ответили), прежде, но кажется, что моя ситуация уникальна, потому что у меня не может быть ни одного решения работать.
При выполнении я должен переименовать все свои фотографии от *.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
Это действительно просто:
Переименовывают к чему-то еще, чем то же значение с различным случаем
rename 's/\.JPG$/\.jpgaux/' *.JPG
Теперь переименовывает это что-то еще к .jpg
назад снова, но нижний регистр на этот раз
rename 's/\.jpgaux$/\.jpg/' *.jpgaux
Источник: , Как изменить расширение нескольких файлов из командной строки? Благодаря Chakra!
Это работает лучше всего, я думаю, поскольку поддержки жемчуга, выполняющие код в regex
rename -n 's/(\.[A-Z]+$)/lc($1)/ge' *.*[A-Z]*
, удаляют -n
для фактического переименования файлов
ЕСЛИ 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>
очень просто с mmv:
sudo apt install mmv
mmv \*.JPEG \#1.jpeg