![공백/문자를 백슬래시로 바꾸기 [중복]](https://linux55.com/image/61944/%EA%B3%B5%EB%B0%B1%2F%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EB%B0%B1%EC%8A%AC%EB%9E%98%EC%8B%9C%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EA%B8%B0%20%5B%EC%A4%91%EB%B3%B5%5D.png)
다음 명령을 사용하여 여러 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