регулярное выражение для удаления последних четырех символов

регулярное выражение для удаления последних четырех символов

Есть ли способ, которым я мог бы удалить последние четыре символа с помощью regex в однострочном скрипте ниже, когда я конвертирую файлы .wav в файлы .mp3. На данный момент мой однострочный скрипт создает файлы, заканчивающиеся на.wav.mp3

for i in *.wav; do avconv -i "$i" "$i".mp3;done 

Выводит следующий результат

    Sanctify, Separate, & Success Success.wav.mp3
    There four types of love.wav.mp3
    Theres too much love to let you fail.wav.mp3

решение1

Вам не нужно регулярное выражение, вы хотите использовать Bashрасширение параметрачтобы удалить расширение файла при передаче:

for i in *.wav; do avconv -i "$i" "${i%.*}".mp3; done

Здесь, "${i%.*}"расширяется как узор наконец параметра, как определено всем ( *) после .удаления самого короткого совпадения, т. е., .wav.

Вы также можете сделать буквальную замену с помощью "${i/.wav/.mp3}".

Связанный контент