デフォルトでは、zshでglobを使用してリストを作成できます。わかりましたら、そのリストをフィルタリングしたい場合が多いのですが、あえてそうすべきか不思議に思っています。
zshでリストをフィルタリングする方法はありますか?当然のことではないかと思いますが、今日は精神的に収穫量が少ない日です。
答え1
zshがこの機能を備えた唯一のシェルなので、これは奇妙な質問です。知られているグローバル予選。いつものように、マニュアルはやや簡潔で、例が不足しています。これZsh愛好家このページにはいくつかの例があります。Google検索zsh "glob qualifiers"
いくつかのブログ投稿とチュートリアルが登場しました。検索も可能です"glob qualifier"
このウェブサイトから。
基本:glob修飾子はglobの末尾の括弧内にあります。最も便利なのは、特定のファイル形式のみを選択するための句読点です。
echo *(/) # directories
echo *(.) # regular files
echo *(@) # symbolic links
echo *(-/) # directories and symbolic links to directories
サイズ、日付、所有権などのメタデータをフィルタリングする別の修飾子があります。
# files owned by the user running zsh, over 1MB, last modified more than 7 days ago
echo *(ULm+1m+7)
Glob修飾子は一致順序を制御し、一致数を制限することもできます。
echo *(Om[1,10]) # The 10 oldest files
修飾子を持つ関数を呼び出して任意のフィルタを設定できます(トリッキーな引用符が正しい場合は、+
コードを修飾子にインライン化することもできます)。e
残念ながら、これらすべては世界中でのみ適用されます。このようにファイル名のリストを作成するには、ワイルドカードを使用するときにフィルタリングする必要があります。すでに作成したリストをフィルタリングしたい場合は、まったく異なる構文があります。パラメータ拡張フラグ、単純なテキストフィルタリング("${(@)ARRAY:#PATTERN}"
)のみを実行できます。