Bashコマンドは停止し、3番目の部分は実行されません。

Bashコマンドは停止し、3番目の部分は実行されません。

フォルダ内のすべてのビデオをインポートして.tsセグメントに変換し、m3u8プレイリストを作成するコマンドがあります。

その後、それをファイルにリンクする必要があるので、playlist.txt次のようにします。

cd /var/myfolder && find ./ -name "*.*" -exec ffmpeg -i {} -c:v h264 -crf 1 -flags +cgop -g 30 -hls_time 1 -hls_list_size 0 {}.m3u8 2>&1 > /dev/null \; && ls /var/myfolder/*.m3u8 | sed "s:.*/::" | xargs -i echo file {} > /var/myfolder/playlist.txt && echo done';

最初と2番目のコマンドが機能すると(フォルダのcdとffmpegの変換)、コマンドは&& ls /var/myfolder/*.m3u8 | sed "s:.*/::" | xargs -i echo file {} > /var/myfolder/playlist.txt && echo done';実行されません。

3番目のコマンドが実行されない理由は理解できません。

答え1

あなたはすることはできませんfind -exec

xargsデフォルトは...です。ただし、すでにディレクトリにechoあるので、最後の行を大幅に簡略化して削除することができます。cdxargssed

cd /var/myfolder && 
find ./ -name "*.*" -exec ffmpeg -i {} -c:v h264 -crf 1 -flags +cgop -g 30 -hls_time 1 -hls_list_size 0 {}.m3u8 \; 2>&1 > /dev/null && 
printf 'file %s\n' *.m3u8 > /var/myfolder/playlist.txt &&
echo done

関連情報