如何使用仅扩展名不同的输出文件名?
我正在尝试创建一个 Automator 服务,将 macOS Finder 中的 MTS 文件转换为 MP4。为此,我需要设置一个小 bash 脚本,但我不知道如何使用输入文件名(例如“file.MTS”),然后使用 HandBrakeCLI 生成一个名为“file.mp4”的文件。
当我尝试将不带扩展名的文件名分配给变量然后使用它时,我做错了一些事情,但我不知道问题是什么:
for if in "$@"
do
dest=`"$(basename "$if" | sed 's/\(.*\)\..*/\1/')"`
/Applications/HandBrakeCLI -i "$if" -o "$dest".mp4 --preset="Fast 1080p30"
done
I'm trying to create an Automator service that converts a MTS file to MP4 from the macOS Finder. To do so I need to setup a little bash script, but I don't know how to use input filename (for example, "file.MTS") and then generate a file called "file.mp4" with HandBrakeCLI.
I'm doing something wrong when I'm trying to assign the filename without the extension to a variable and then using it, but I don't know what is the problem:
for if in "$@"
do
dest=`"$(basename "$if" | sed 's/\(.*\)\..*/\1/')"`
/Applications/HandBrakeCLI -i "$if" -o "$dest".mp4 --preset="Fast 1080p30"
done
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你不需要
sed
;basename
已经知道如何删除给定的扩展名。正如评论中提到的,反引号是不必要的且不正确的。
例如,
如果您提前不知道实际扩展,则参数扩展就足够了。
或者
You don't need
sed
;basename
already knows how to strip a given extension.As mentioned in a comment, the backticks are unnecessary and incorrect.
For example,
If you don't know the actual extension ahead of time, parameter expansion is sufficient.
or