한 디렉토리에 여러 개의 avi 파일이 있고 avconv를 사용하여 해당 파일을 mp4로 변환하고 싶습니다. 이제 각 avi에 대해 수동으로 이 작업을 수행하는 방법에 대한 기본 프로세스를 알고 있습니다. 즉, $@
각 새 avi에 따라 변경되는 변수는 어디에 있습니까?
avconv -i [email protected] -c copy [email protected]
그러나 이것을 자동화하기 위해 bash 스크립트를 작성하는 방법을 아는 사람이 있는지 궁금합니다. 나에게 제공된 답변의 수정된 버전을 시도했습니다.PNG 문제 최적화지금 바로:
for k in `find . -name "*.avi"`
do
avconv -i "$k" -c copy "$k.mp4"
done
그러나 k는 형식이므로 ./filename
avconv는 입력으로 주어지면 이를 이해할 수 없습니다. 또 다른 문제는 따옴표를 사용하더라도 많은 avis 파일 이름에 공백이 있기 때문에 어떤 이유로 avconv가 파일 이름에서 공백으로 구분된 모든 단어에서 실행된다는 것입니다.
답변1
그러면 모든 파일을 반복하여 .avi
변환해야 합니다(테스트되지 않음).
printf '%s\0' *.avi | xargs -0 -I {} -P 1 avconv -i "{}" -c copy "{}".mp4
-P 1
예를 들어 -P 8
8개 파일을 병렬로 변환 하도록 변경할 수 있습니다 .