我正在尝试制作一个合并两个字幕的脚本。
file.srt
file.forced.srt
file2.srt
file2.Forced.srt
Run Code Online (Sandbox Code Playgroud)
我有一个不区分大小写的匹配两个强制字幕。
shopt -s extglob
shopt -s nocaseglob
for file in "${1%/}/"*forced.srt; do
echo File: "$file"
done
Run Code Online (Sandbox Code Playgroud)
我有这段代码可以从文件名中删除强制字符串,因此我可以在脚本中使用匹配的文件
subs=${file//.Forced/}
Run Code Online (Sandbox Code Playgroud)
如何forced
从我的变量中删除这个字符串,不区分大小写?
您需要此处的shell 选项,nocasematch
而不是(仅仅)nocaseglob
:
如果启用了 shell 选项(请参阅The Shoptbuiltin
nocasematch
中对 shopt 的描述),则执行匹配时不考虑字母字符的大小写。
nocaseglob
仅适用于真正的文件名扩展(就像您在 for 循环中使用的那样),但不适用于发生模式匹配的其他地方。对于您的用例,您实际上需要启用两者,以便文件名扩展和模式匹配都可以完成。
仅对于该位置的两个字符,您可以使用 [Ff]
两者F
和f
那里进行匹配。