如何避免文件名中的空格?

rɑː*_*dʒɑ 3 bash

我有一大堆这需要从转换的文件.mp4.mpeg.one。我的一个朋友向我推荐了这个简单的脚本。但是它不起作用,因为文件名包含空格。

这是脚本:

for f in $(ls *.mp4); do ffmpeg -i "$f".mp4 "$f".mprg; done
Run Code Online (Sandbox Code Playgroud)

And*_*ini 11

ls在这种情况下您不需要使用。作为一般规则,始终尝试使用 shell 内置函数和 glob 特性,而不是依赖外部程序(例如ls),因为它们可能会引入丑陋的变通方法问题。

此外,您不应该“手动”将扩展名附加到输入文件名(您提供给的那个-i),而应该去除输出文件上的扩展名。

所以命令应该是:

for f in *.mp4; do ffmpeg -i "$f" "${f%.mp4}".mprg; done
Run Code Online (Sandbox Code Playgroud)