bash : 将部分文件名改为小写

bash : change part of filename to lowercase

我需要重命名文件列表,将任何文件扩展名更改为小写: 即:从 My_TEST.ONE.two.Three.fOuR.FIveMy_TEST.one.two.three.four.five

目前我找到的是这个

#!/bin/bash

sourcefilename="My_TEST.ONE.two.Three.fOuR.FIve"
newfilename=""
for word in $(echo $sourcefilename | tr '.' '\n'); do
        if [ -z "$newfilename" ]; then
                newfilename="$word"
        else
                newfilename="$newfilename.$(echo $word | tr [:upper:] [:lower:])"
        fi
done

是否有更好的(也许是优雅的)方法?

使用 bash Parameter Expansion 功能。

fileName='My_TEST.ONE.two.Three.fOuR.FIve'
first="${fileName%%.*}"
rest="${fileName#*.}"
echo mv -v "${fileName}" "${first}.${rest,,[A-Z]}"