
Есть ли способ, которым я мог бы удалить последние четыре символа с помощью 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}"
.