이 기사%
구문을 사용하여 파일 확장자를 제거 할 수 있다고 말합니다 .
$ s=a/b.mkv
$ echo ${s%.*}
a/b
행 집합에 대해 원하는 결과를 얻기 위해 %
구문을 in과 어떻게 %
결합 할 수 있습니까?xargs
$ cat | xargs -I % echo ffmpeg -i % (INSERT MAGIC HERE)
a/b.mkv
ffmpeg -i a/b.mkv a/b.mp4
c/d.mkv
ffmpeg -i c/d.mkv c/d.mp4
답변1
주어진 의견을 바탕으로 짧고 좋은 해결책을 찾았습니다.
find . -name '*.mkv' | while read f; do echo ffmpeg -i "$f" "${f%.*}.mp4"; done
답변2
zsh
이전 답변을 바탕으로 이것이 쉘인 경우 다음을 사용할 수도 있습니다 .
for i in **/*.mkv; echo ffmpeg -i $i $i:r.mp4
그렇지 않으면:
zsh -c 'for i in **/*.mkv; echo ffmpeg -i $i $i:r.mp4'
이렇게 하면 파일 이름의 공백 문제를 피할 수 있습니다.