1

ほとんどがのような形式のディレクトリのリストがあります./[foobar]/。ただし、のようにフォーマットされているものもあり./[foo] bar/ます。

最初のパターンと一致しない(つまり、中括弧の外側にテキストがあるfind)ディレクトリを見つけるために(またはシェルが提供する他のユーティリティを)使用したいと思います。今まで、自分のパターンを「反転」させる方法を見つけることができませんでした。

これを行う方法はありますか?

4

4 に答える 4

3

findとgrepを組み合わせることができ、それは-vオプションです。find . -type d | grep -v "[foobar]"

于 2013-03-06T17:14:41.353 に答える
2

find!およびによる否定をサポートし-notます。後者はPOSIXに準拠していません。使用!するには、前に円記号を付けるか、一重引用符で囲む必要があります。

于 2013-03-06T17:14:13.627 に答える
2

この特定の例では、単純な通常のグロブが機能します。

$ ls
[a]b [ab]
$ echo \[*\]
[ab]

より複雑なパターンの場合は、以下を有効にできますextglob

!(pattern-list)
     Matches anything except one of the given patterns

および同様のグロブ

またはfindを使用します:

find dir ! -name ...
于 2013-03-06T17:14:24.110 に答える
1
find -type d -name '*\]?*'

あなたがブラケットチェックを開くことを主張しない限り...

于 2013-03-06T17:15:24.257 に答える