zsh から glob 修飾子の範囲を制限します。

zsh から glob 修飾子の範囲を制限します。

私はこれがシェルで提供する方法ではないことをほとんど確信していますzshが、とにかくマニュアルに欠けていないことを確認するように尋ねると思いました。

シェルを使用すると、zsh次のパターンを使用してディレクトリに表示される最大2つのファイルを選択できます。

*(.OL[1,2])

一連のディレクトリがあり、各ディレクトリに最大2つのファイルが必要な場合は、個々のディレクトリを繰り返してから次のものを使用する必要があると思います。

$dirpath/*(.OL[1,2])

$dirpath現在のループ反復では、ディレクトリパスはどこにありますか?)

これは〜になりますいいね言える

*/*(.OL[1,2])

ただし、glob修飾子は一致する名前の完全なリストに適用され、各ディレクトリで2つではなく2つの一致を取得します。

質問:最も近いパスコンポーネントにのみ影響するように修飾子の「範囲」を制限できますか?

ベストアンサー1

ループは必要ありません。中間変数で十分です。使用^パラメータ拡張刻印アレイに分散されます。

dirpath=(*(N-/))
print -rC1 -- $^dirpath/*(.NOL[1,2])

あるいは、一時変数を回避するために匿名関数を使用することもできます($argv/$@匿名関数パラメータになります)。

() {print -rC1 -- $^@/*(.NOL[1,2])} *(N-/)

おすすめ記事