ファイル名がシェルグロブパターンに一致するかどうかをプログラムで確認するにはどうすればよいですか?
文字列$stringがglobパターンと一致するかどうかを確認したいと思います$pattern。 $string既存のファイルの名前である場合とそうでない場合があります。これどうやってするの? 入力文字列について次の形式を想定します。 string="/foo/bar" pattern1="/foo/*" pattern2="/foo/{bar,baz}" 私はかどうかを判断し、bashのイディオム検索したい$stringにマッチしたことになる$pattern1、$pattern2または他の任意のglobパターンを。ここに私がこれまで試したものがあります: [[ "$string" = $pattern ]] これはほとんど機能$patternしますが、グロブパターンではなく文字列パターンとして解釈されます。 [ "$string" = $pattern ] このアプローチの問題は、$pattern展開されてから文字列比較が実行され$string、の展開であるということ$patternです。 [[ "$(find $pattern -print0 -maxdepth 0 2>/dev/null)" =~ "$string" ]] これ$stringは機能しますが、存在するファイルが含まれている場合のみです。 [[ $string =~ $pattern ]] =~演算子が$patternグロブまたはワイルドカードパターンではなく、拡張正規表現として解釈されるため、これは機能しません。