У меня есть куча wav-файлов, которые я конвертировал в mp3-файлы с помощью ffmpeg.
Теперь все mp3-файлы называются file.wav.mp3
.
How можно удалить суффикс .wav
, сохранив остальную часть имени файла?
Я хотел бы сделать это сразу для всего каталога.
С помощью цикла оболочки, удалив кратчайший «суффикс с двумя точками»
for f in *.wav.mp3; do echo mv "$f" "${f%.*.*}.mp3"; done
или (мой личный фаворит для подобных вещей) с помощью mmv
из пакета mmv
mmv -n '*.wav.mp3' '#1.mp3'
Удалите echo
или -n
, если вы уверены, что они поступают правильно.
Если у вас есть все файлы с именами в формате .wav.mp3
, используйте следующую команду:
for i in *.wav.mp3; do echo $i; mv "$i" "${i::-8}.mp3"; done
Находясь в каталоге с файлами .wav.mp3
:
for i in *.wav.mp3; do mv "$i" "$(echo $i | sed s/.wav//g)"; done
Тем не менее, вы можете использовать то же самое для своей команды ffmpeg, поэтому не не придется переименовывать их позже.
Я просто хочу добавить подсказку:
Хорошая программа для таких задач - emv .
Вы запускаете ее как `emv .wav.mp3 , и откроется редактор. Затем вы можете использовать поиск и замену. Затем вы сохраняете файл и закрываете редактор, и программа переименовывает ваши файлы.
Это особенно удобно, когда вы знаете, как использовать расширенный редактор, такой как vim
, но даже когда большинство простых редакторов поддерживают поиск и замените то, что вам обычно нужно для решения подобных проблем.
Как видите, есть несколько способов добиться этого. Другой способ использования команды basename показан ниже:
for file in ./*.wav.mp3
do
mv "$file" "$(basename "$file" .wav.mp3)".mp3
done
В браузере файлов в Ubuntu вы можете выбрать несколько файлов и переименовать их в соответствии с шаблоном, просто нажав F2 или щелкнув правой кнопкой мыши и выбрав Переименовать .
Здесь я заменяю x
на _by_
. В вашем случае вы можете заменить .wav
пустой строкой.
Если у вас есть все файлы с именами в формате .wav.mp3
, используйте следующую команду:
#!/bin/bash
for i in *
do
#Define the string value
text="$i"
# Set .wav as the delimiter
IFS='.wav.'
#Read the split words into an array based on space delimiter
read -a strarr <<< "$text"
mv "$i" "${strarr[0]).mp3" #changing input file name
done