将所有文件扩展名转换为小写

51

我试图将所有扩展名都转换为小写,而不管它是什么。到目前为止,从我所看到的,你需要指定要转换为小写的文件扩展名。然而,我只想在名称中最后一个点.之后将其余所有内容转换为小写。

如何在bash中完成这个操作?


提问者最近又有一个关于Bash脚本重命名文件的问题。因此,他可能正在询问如何编写Bash脚本来更改每个文件的名称(在他的主目录中?在目录中和下面的目录中?只是在一个目录中?),以将文件名扩展名中的每个大写字母更改为小写字母,除了第一个字母。例如,“PICTURE.JPG”将被重命名为“PICTURE.Jpg”。 - Eric Postpischil
我有以testing.mP3和testing.Mp3结尾的文件 - 我想将它们全部重命名为*.mp3。 - thevoipman
12个回答

0

所以,这些看起来像行噪声的解决方案很好,但是从Python REPL中很容易实现(我知道OP要求使用bash,但是现在许多安装了bash的系统也都安装了Python...):

import os
files = os.listdir('.')
for f in files:
    path, ext = os.path.splitext(f)
    if ext.isupper():
        os.rename(f, path + ext.lower())

0

如果你只对某些文件扩展名感兴趣,比如将所有大写的“JPG”扩展名转换为小写的“jpg”,你可以使用命令行实用程序rename。进入要更改的目录,然后执行以下操作。

rename -n 's/\.JPG$/\.jpg/' *

使用 -n 选项来测试将要更改的内容,当您对结果满意时,可以不使用该选项进行操作。
rename  's/\.JPG$/\.jpg/' *

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接