Вы можете сделать то же самое с помощью поиска одной строки. Предполагая, что все файлы, которые вы хотите обработать, имеют формат wav:
find /path/ -type f -name "*wav" -exec ffmpeg -i {} -sameq {}.mp3 \;
Если вы хотите найти файлы "rm" и удалить их после преобразования:
find /path/ -type f -name "*.rm" -exec ffmpeg -i {} -sameq {}.mp3 && rm {} \;
Тем не менее, если вы хотите сделать это с помощью сценария оболочки, который вы показали, возьмите строку с надписью
echo "$i";
замените его следующим:
ffmpeg -i "$i" -sameq "$i".mp3
$ i - это переменная. Несколько строк, у вас есть:
for i in *
это в основном означает «для каждого элемента в * (что, в свою очередь, обозначает все файлы в текущем каталоге, это то, что называется« расширением оболочки »), поместите имя элемента / файла в переменную i , а затем выполните весь код между «do» и «done» ». Таким образом, для каждой итерации i будет содержать имя одного из файлов в этом каталоге.
Также есть раздел, в котором проверяется, является ли i каталогом, и если это так, он рекурсивно перечисляет его содержимое.
Краткое заключительное примечание: \; в конце команды find имеет значение, и НУЖНО иметь пробел перед обратной косой чертой, иначе она не будет работать.