不足しているOSXリソースを探す

不足しているOSXリソースを探す

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*" \)

実際にはトリックがあります。 !演算子は検索パターンを否定します。したがって、一致しないすべてのファイルが取得されます。

関連情報