シェルグローブの「または」

シェルグローブの「または」

ファイル名にサブストリング「s1r」、「s2r」、「s3r」、または「s19r」を含むファイルを見つけたいです。

すぐに到着します!

間違った試み:

ls *s[123][9?]r*

上記は、部分文字列を含むファイルのみを提供します。

s19r

しかし、

ls *s[1-3]|[19]r*

返品

-bash: [19]r*: コマンドが見つかりません。

ls: *s[1-3]: 対応するファイルまたはディレクトリはありません。

つまり、or |演算子を認識しません。これはパイプにも使用されるので意味があります。

「s1r」、「s2r」、「s3r」、または「s19r」を含むファイルを取得するにはどうすればよいですか?

ベストアンサー1

使用ls *s1r* *s2r* *s3r* *s19r*

存在しないファイルが気になる場合は、nullglob オプションを設定できます。

          nullglob
                  If  set,  bash allows patterns which match no files (see
                  Pathname Expansion above) to expand to  a  null  string,
                  rather than themselves.

シェルがbashではない場合は、同様の方法があります。マニュアルページを見てください。

おすすめ記事