不区分大小写的 bash 字符串替换

不区分大小写的 bash 字符串替换

我正在尝试制作一个合并两个字幕的脚本。

file.srt
file.forced.srt
file2.srt
file2.Forced.srt

我有一个不区分大小写的匹配两个强制字幕。

shopt -s extglob
shopt -s nocaseglob

for file in "${1%/}/"*forced.srt; do
   echo File: "$file"
done

我有这段代码可以从文件名中删除强制字符串,因此我可以在脚本中使用匹配的文件

subs=${file//.Forced/}

如何forced从我的变量中删除这个字符串,不区分大小写?

答案1

你要外壳nocasematch选项在这里,而不是(仅仅)nocaseglob

如果nocasematchshell选项(参见shopt中的描述内置商店) 启用时,执行匹配时不考虑字母字符的大小写。

nocaseglob仅适用于真正的文件名扩展(就像您在 for 循环中使用的那样),但不适用于发生模式匹配的其他地方。对于您实际需要的用例两个都启用,以便文件名扩展和模式匹配都可以完成。

仅针对那一处的两个角色,您可以使用 [Ff]匹配两者Ff那里。

相关内容