Script to convert .wma to .mp3 command not found [duplicate]

На этот вопрос уже есть ответ здесь:

Я использую скрипт под названием conv-script, который я нашел на AskUbuntu здесь. Он выглядит так

#!/bin/sh

readarray -t files < wma-files.txt

for file in "${files[@]}"; do
    out=${file%.wma}.mp3
    probe=`avprobe -show_streams "$file" 2>/dev/null`
    rate=`echo "$probe" | grep "^bit_rate" | sed "s:.*=\(.*\)[0-9][0-9][0-9][.].*:\1:" | head -1`
    ffmpeg -i "$file" -ab "$rate"k "$out" && rm "$file"
done

Я запустил sudo chmod +x ./conv-script , затем я пытаюсь выполнить его с помощью sudo ./conv-script

После этого я получаю ошибку sudo: ./conv-script: команда не найдена

Я не знаю, что я делаю неправильно, поскольку я вижу файл в текущем рабочем каталоге и установил его как исполняемый. Я подумал, что дело в том, что первая строка моего скрипта неправильная, но у меня есть другой скрипт с тем же shebang, и он выполняется нормально. Когда я использую shebang в оригинале #!/usr/bin/env bash, я получаю то же самое. Спасибо за помощь

EDIT:

вывод файла conv-script

conv-script: a /usr/bin/env bash script, ASCII text executable

вывод stat conv-script

  File: ‘conv-script’
  Size: 325             Blocks: 64         IO Block: 32768  regular file
Device: 821h/2081d      Inode: 82004       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ kalenpw)   Gid: ( 1000/ kalenpw)
Access: 2016-05-17 16:40:43.000000000 -0600
Modify: 2016-05-17 14:33:31.000000000 -0600
Change: 2016-05-17 14:33:32.000000000 -0600
 Birth: -
3
задан 13 April 2017 в 15:23

1 ответ

Как сначала удостоверяются, что Вы имеете ffmpeg и libav-tools установленный, это можно сделать путем ввода в терминале ( ctrl + высокий звук + t ):

apt-cache policy ffmpeg libav-tools

Это должно получить Вас вывод как следующее, если оба установлены:

ffmpeg:
  Installed: 7:2.8.6-1ubuntu2
  Candidate: 7:2.8.6-1ubuntu2
  Version table:
 *** 7:2.8.6-1ubuntu2 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        100 /var/lib/dpkg/status
libav-tools:
  Installed: 7:2.8.6-1ubuntu2
  Candidate: 7:2.8.6-1ubuntu2
  Version table:
 *** 7:2.8.6-1ubuntu2 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
        100 /var/lib/dpkg/status

при входе одну из строк, начинающихся Installed:, запись (none) устанавливает пакет с sudo apt-get install <package-name>.

Теперь только несколько исправлений к самому сценарию:

#!/bin/bash

cd "$1"
find . -type f | grep wma$ > wma-files.txt

readarray -t files < wma-files.txt

for file in "${files[@]}"; do
    out=${file%.wma}.mp3
    probe="$(avprobe -show_streams "$file" 2>/dev/null)"
    rate="$(echo "$probe" | grep "^bit_rate" | sed "s:.*=\(.*\)[0-9][0-9][0-9][.].*:\1:" | head -1)"
    ffmpeg -i "$file" -ab "$rate"k "$out" && rm "$file"
done

можно назвать это затем с ./script.sh /path-to-your-music.

1
ответ дан 14 April 2017 в 01:23
  • 1
    Прямо сейчас я знаю, что имя должно быть тем же. – Luis Alberto Colin Macias 29 October 2018 в 16:22

Другие вопросы по тегам:

Похожие вопросы: