Bash ${file%/*}将空格替换为下划线

Bash ${file%/*}将空格替换为下划线,bash,filenames,spaces,dirname,Bash,Filenames,Spaces,Dirname,通过一个简单的脚本将mp3转换为ogg文件 但是:当我构造新的路径名和文件名时 与 带有空格的文件-/路径名将使用下划线创建 我看不出有什么理由。。。欢迎大家帮忙 Appelgebak默认情况下,mp32ogg会自动将输出文件名中的空格(以及许多其他非字母字符)替换为下划线。要抑制此行为,请传入(未记录的)--no replace标志。Hm。使用mp32ogg--verbose--delete--no_replace--quality=0--rename=“${file%/*}/basename

通过一个简单的脚本将mp3转换为ogg文件

但是:当我构造新的路径名和文件名时 与

带有空格的文件-/路径名将使用下划线创建

我看不出有什么理由。。。欢迎大家帮忙


Appelgebak

默认情况下,
mp32ogg
会自动将输出文件名中的空格(以及许多其他非字母字符)替换为下划线。要抑制此行为,请传入(未记录的)
--no replace
标志。

Hm。使用mp32ogg--verbose--delete--no_replace--quality=0--rename=“${file%/*}/
basename”${file###*.
”$1|退出1导致:
mp32ogg v0.11-gentoo r2(c)2000-2002年Nathan Walp根据艺术许可证条款无担保发布未知选项:no_replace
@user605447:显然它的
--no replace
,而不是
--no_replace
。也许亚当·罗森菲尔德忘了在帖子上设置
--no replace
选项;-)@乔索:谢谢,现在纠正了打字错误。
    # set the 'file' variable first
    file="$1"
    # get extension; everything after last '.'
    ext=${file##*.} 
    mp32ogg --verbose --delete --quality=0 --rename="${file%/*}/`basename "$file" .${file##*.}`"  "$1"|| exit 1