#bash #replace #file-rename #uppercase #lowercase
#bash #заменить #файл-переименовать #верхний регистр #нижний регистр
Вопрос:
Мне нужно переименовать список файлов, изменив любое расширение файла на нижний регистр: ie: от My_TEST.ONE.two.Three.fOuR.FIve
до My_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
Есть ли лучший (и, возможно, элегантный) подход?
Ответ №1:
Используйте функции bash
расширения параметров.
fileName='My_TEST.ONE.two.Three.fOuR.FIve'
first="${fileName%%.*}"
rest="${fileName#*.}"
echo mv -v "${fileName}" "${first}.${rest,,[A-Z]}"