この記事%
構文を使用してファイル拡張子を削除できると言います。
$ 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'
これにより、ファイル名の空白の問題を回避できます。