Я использую скрипт 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: command not found
Я не уверен, что я делаю неправильно, так как я вижу файл в текущем рабочем каталоге, и я установил его как исполняемый. Я думал, что это может быть первая строка моего скрипта неверна, но у меня есть другой скрипт с тем же shebang, и он отлично выполняется. Когда я использую shebang в оригинале, #!/usr/bin/env bash
я получаю то же самое. Спасибо за помощь
РЕДАКТИРОВАТЬ:
выходfile 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: -
решение1
Для начала убедитесь, что он у вас ffmpeg
установлен libav-tools
, это можно сделать, введя в терминале ( ctrl+ alt+ 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
.