我知道这个问题之前已经有人问过(并回答过),但看来我的情况比较特殊,因为我无法找到任何可行的解决方案。
运行时,我需要将所有照片从 重命名*.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
答案1
这真的很简单:
重命名为除大小写不同的相同值以外的其他名称
rename 's/\.JPG$/\.jpgaux/' *.JPG
现在将其重命名为其他名称
.jpg
,但这次要使用小写字母rename 's/\.jpgaux$/\.jpg/' *.jpgaux
演示:http://paste.ubuntu.com/8853245/
来源:如何从命令行更改多个文件的扩展名?谢谢脉轮!
答案2
使用 mmv 真的很容易:
sudo apt install mmv
mmv \*.JPEG \#1.jpeg
答案3
如果 αғsнιη 的评论是正确的,我认为他是对的,那么 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>
答案4
我认为这是最好的,因为 perl 支持在正则表达式中运行代码
rename -n 's/(\.[A-Z]+$)/lc($1)/ge' *.*[A-Z]*
删除-n
以实际重命名文件