大文字と小文字を区別しない bash 文字列の置換

大文字と小文字を区別しない bash 文字列の置換

2つの字幕をマージするスクリプトを作成しようとしています。

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

2つの強制字幕は大文字と小文字を区別せずに一致します。

shopt -s extglob
shopt -s nocaseglob

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

私のスクリプトで一致するファイルを使用できるように、ファイル名から強制文字列を削除するこのコードがあります。

subs=${file//.Forced/}

forced私の変数からこの文字列を大文字と小文字を区別せずに削除するにはどうすればよいですか?

答え1

欲しい住宅nocasematchオプション代わりにここにのみnocaseglob

nocasematchシェルオプション(shoptの説明を参照)内蔵店舗)有効にすると、英字の大文字と小文字を区別せずに一致を実行します。

nocaseglob実際のファイル名拡張子(たとえば、forループで使用される拡張機能)でのみ機能しますが、パターンマッチングが発生する他の場所では機能しません。実際に必要なユースケースの場合両方ファイル名拡張とパターンマッチングの両方を実行できるように有効になっています。

その場にいる二人のキャラクターだけに、あなたはそれを使用することができます [Ff]F両方とも一致しますf

関連情報