bash %를 xargs %와 결합

bash %를 xargs %와 결합

이 기사%구문을 사용하여 파일 확장자를 제거 할 수 있다고 말합니다 .

$ 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'

이렇게 하면 파일 이름의 공백 문제를 피할 수 있습니다.

관련 정보