You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac终端下FFmpeg批量转码带空格文件的命名异常问题

问题解决:转码后文件名异常的修复

问题根源

你的命令中$(basename $i)没有给$i添加双引号,当路径包含空格时,Shell会将带空格的路径拆分成多个独立参数传递给basename。比如./01. Original Recording/xxx.m4a会被拆成./01.、Original、Recording/xxx.m4a三个参数,basename只会处理第一个参数,最终输出错误的文件名前缀,空格被替换为?是Shell分词导致的显示异常。

修复方案

方案1:给basename的参数加引号

修正后的命令:

for i in "./01. Original Recording"/*.m4a; do ffmpeg -i "$i" -b:a 64k "./02. Compressed/$(basename "$i")"; done

给$i加上双引号后,basename能接收完整的带空格路径,正确提取仅包含文件名的部分。

方案2:用Shell参数扩展替代basename(更高效)

无需调用外部basename命令,直接通过Shell内置的参数扩展提取文件名:

for i in "./01. Original Recording"/*.m4a; do ffmpeg -i "$i" -b:a 64k "./02. Compressed/${i##*/}"; done

${i##*/}的作用是从变量i的开头删除最长的*/匹配内容,也就是去掉路径前缀,只保留文件名,效果和basename一致,但执行效率更高。

内容的提问来源于stack exchange,提问作者Vihung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:07:10