本文说你可以使用%
语法来删除文件扩展名:
$ 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'
这将避免文件名中出现空格问题。