Bash 명령이 중지되고 세 번째 부분이 실행되지 않습니다.

Bash 명령이 중지되고 세 번째 부분이 실행되지 않습니다.

폴더에 있는 모든 비디오를 가져와서 .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';

첫 번째 및 두 번째 명령이 작동하면(폴더의 cd 및 ffmpeg 변환) 명령이 && ls /var/myfolder/*.m3u8 | sed "s:.*/::" | xargs -i echo file {} > /var/myfolder/playlist.txt && echo done';실행되지 않습니다.

세 번째 명령이 실행되지 않는 이유를 이해할 수 없습니다.

답변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

관련 정보