OSX(big sur -so Zhell)には.bundleファイルを含むフォルダがあり、各バンドルには複数のファイルとフォルダが含まれています。ほとんどのファイルにはPNG_.zipというリソースがありますが、一部のファイルにはありません。
だからこれを実行すると:
find ~/Desktop/test -name "PNG_.zip"
PNG_.zipを含むすべてのエントリが出力されます。
しかし、すべてのアイテムを探したいです。PNG_.zipを含まないどうすればいいですか?
ありがとうございます!
答え1
zshの使用グローバル予選、バンドルがディレクトリであるとします。
まず、現在のディレクトリの下でパッケージディレクトリを見つける方法は次のとおりです。
print -rC1 -- **/*.bundle(/N)
**/…
入れ子になったサブディレクトリのファイルと一致します。(/)
ディレクトリの一致を制限します。(N)
一致するものがない場合、結果はエラーではなく空のリストです。
その後、結果をフィルタリングしてバンドルのみを維持し、他の項目は維持しませんPNG_.zip
。
print -rC1 -- **/*.bundle(/Ne['()(($#==0)) $REPLY/**/PNG_.zip(NDY1)'])
(e['…'])
一致項目のフィルタリング: 式が真の一致のみを保持します。このコードはゲームごとに順次実行され、$REPLY
ゲームに設定されます。()(($#==0)) …
…
長さがゼロの単語リストに展開されるか、つまり…
(単語リストとして)空であるかどうかをテストします。(Y1)
一致するものが 1 つ見つかった場合、ディレクトリの検索を停止する最適化です。 ()は、(D)
パッケージディレクトリの隠しサブディレクトリにあるdotglob
ファイルも検索します。PNG_.zip
答え2
私は信じる:
$ find . -type f \( ! -iname "*PNG_.zip*" \)
実際にはトリックがあります。 !演算子は検索パターンを否定します。したがって、一致しないすべてのファイルが取得されます。