グローバルマッチングからパターンを除外

グローバルマッチングからパターンを除外

私のディレクトリは次のとおりです。

$ ls
total 0
-rw-r--r-- 1 user user 0 Jun 18 22:44 file0
-rw-r--r-- 1 user user 0 Jun 18 22:44 file1
-rw-r--r-- 1 user user 0 Jun 18 22:44 file2
-rw-r--r-- 1 user user 0 Jun 18 22:44 file3
-rw-r--r-- 1 user user 0 Jun 18 22:44 file4
-rw-r--r-- 1 user user 0 Jun 18 22:44 file5
-rw-r--r-- 1 user user 0 Jun 18 22:44 file6
-rw-r--r-- 1 user user 0 Jun 18 22:44 file7
-rw-r--r-- 1 user user 0 Jun 18 22:44 file8
-rw-r--r-- 1 user user 0 Jun 18 22:44 file9

file2bashワイルドカードを使用して一致させたいのですがfile6入らないようにする file3

and複数のパターンに一致する演算子を見つけることができないので、a AND b同等のDe Morganの法則を使用すればよいと思いました。!(!a OR !b)

!(!(file[2-6])|file3)

期待どおりに動作します。

$ echo !(!(file[2-6])|file3)
file2 file4 file5 file6

これを達成するためのより簡単で直接的な方法はありますか?

ベストアンサー1

2つの範囲を適用できます[24-6]。ここで2は最初と4-62番目は次のようになります。

$ ls file[24-6]
file2 file4 file5 file6

他の例:

$ ls file[2356]
file2 file3 file5 file6

文書:

範囲

特別なルールがあります。 「-」で区切られた2文字は範囲を表します。 (したがって、「[A-Fa-f0-9]」は「[ABCDEFabcdef0123456789]」と同じです。)「-」を括弧の間の最初または最後の文字として使用して、文字通りの意味を含めることができます。 (「[]-]」は「]」と「-」の2文字のみと一致し、「[--0]」は「-」、「。」、「0」の3文字と一致します。 / "と一致できません。)

おすすめ記事