
ビデオの長さを知らせる小さなシェルスクリプトを作成し、ビデオのファイル名をパラメータとして渡したいと思います。次のようになります。
$ script_name "file name with spaces.webm" # or any other media file extension
スクリプトファイルは次のとおりです。
#/bin/bash
SECRET_SAUCE_USING_$1 | mediainfo | grep Duration | sort -u
# maybe SECRET_SAUCE_USING_$1 | xargs -0 mediainfo . . .
コマンドラインではこれが機能し、スクリプトで実行したいことは次のとおりです。
$ mediainfo file\ name\ with\ spaces.webm | grep Duration | sort -u
私は次のようなものを試しました。
echo "$1" | sed 's/ /\\ /g' # piped to mediainfo . . .
ファイル名のスペースを「\」文字ペア(引用符を除く)に変更します。 echo ... | sed...部分的には機能しますが、mediainfo barfs
そして
echo "$1" | tr ' ' '\000' | xargs -0 mediainfo . . .
空白をnullに変更し、xargsが空白ではなくファイル名にnullを使用してmediainfoを呼び出すようにします。
これまで私は解決策を見つけることができませんでした。 (私は実際にbashではなくzshを使用しています。)どんな助けにも感謝します。 Tnx。
答え1
スクリプトのパラメータ($1
)がmediainfoのパラメータで終わるようにするには、そのパラメータをその場所に入力します。
# ...
mediainfo "$1" | grep Duration | sort -u
# ...
これはスクリプトの単一パラメータに対して機能します。柔軟性を高めるために、スクリプト内のすべてのパラメータを繰り返して、一度に1つずつmediainfoに提供できます。
for file in "$@"
do
mediainfo "$file" # ...
done