공백/문자를 백슬래시로 바꾸기 [중복]

공백/문자를 백슬래시로 바꾸기 [중복]

다음 명령을 사용하여 여러 mkv를 mp4로 변환하고 싶습니다.

for i in $(ls *mkv); do ffmpeg -i $i -vcodec copy -acodec copy $i.mp4; done;

그러나 파일 이름에 공백과 하이픈이 포함되어 있어 명령이 작동하지 않습니다. ( 수동으로 로 바꾸면 동일한 명령이 작동합니다. The File - 01.mkv)The\ File\ \-\ 01.mkv

그것을 작동시키는 가장 좋은 방법은 무엇입니까?

답변1

변수를 인용하고 명령 대체를 피해야 합니다.

for i in ./*.mkv; do ffmpeg -i "${i}" -vcodec copy -acodec copy "${i}.mp4"; done

바라보다언제 큰따옴표가 필요합니까?인용에 대한 자세한 설명입니다.

내가 이 작업을 수행했을 때 위의 내용은 .mkv.mp4이 문제를 해결하기 위한 확장자를 가진 파일을 생성했습니다.

for i in ./*.mkv; do ffmpeg -i "${i}" -vcodec copy -acodec copy "${i%%.mkv}.mp4"; done

관련 정보