web-dev-qa-db-ja.com

.wmaを.mp3コマンドに変換するスクリプトが見つかりません

AskUbuntuで見つけたconv-scriptというスクリプトを使用しています here 。こんな感じ

#!/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が発生します

現在の作業ディレクトリにあるファイルを見ることができ、実行可能に設定したので、何が間違っているのかわかりません。私が考えていたのは、スクリプトの最初の行が間違っていることでしたが、同じシバンの別のスクリプトがあり、正常に実行されます。元の#!/usr/bin/env bashでShebangを使用すると、同じことが起こります。助けてくれてありがとう

編集:

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: -
3
kalenpw

最初に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:で始まる行の1つにエントリ(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
Videonauth