未找到将 .wma 转换为 .mp3 的脚本命令

未找到将 .wma 转换为 .mp3 的脚本命令

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

首先确保您已经安装ffmpeglibav-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

相关内容