Я новичок, и я искал везде для этого, я также попытался объединить команду переименования в нижнем регистре с некоторым регулярным выражением, чтобы получить Title Case вместо строчного, но я был не очень успешным.
команда преобразует все (файлы + папки) внутри данной папки в нижний регистр:
while IFS= read -r -d '' file; do mv -b -- "$file" "${file,,}"; done < <(find . -depth -name '*[A-Z]*' -print0)
И это моя попытка в случае с заголовком, она работает, но она не рекурсивна:
find . -name "*.flac" -print0 | while read -d $'\0' file; do rename 's/(^|[\s\(\)\[\]_-])([a-z])/$1\u$2/g' *; done
Это лишь некоторые из моих попыток, если есть более короткие, более короткие решения, которые мне бы очень понравились.
Не могли бы вы помочь мне? Спасибо!
EDIT: Я забыл упомянуть, мои файлы выглядят так: «09 - Дорога домой - Эми Макдональд.flac»; следует переименовать в «09 - Дорога домой» - Эми Макдональд.flac. Обратите внимание на то, что уже есть слова с надписью с надписью, а также буквы верхнего регистра в середине слова.
Если вы используете find 's -exedir, тогда имена получат любую команду с ведущими компонентами удаленного пути, например ./sOmE fILE. Затем вы могли бы заглавировать каждую последовательность слов-символов, которой предшествует либо ведущая /, либо пробел, например.
find path/ -execdir rename -nv -- 's/(?<=[\/\s])(\w)(\w*)/\u$1\L$2/g' {} +