例えば。のようなファイルがあります.myignore
。そのファイルには次の文字列があります。
.vs/
*.suo
*.user
*.log
次に、ファイルのパターンに一致するすべてのファイルを見つけたいと思います.myignore
。
ベストアンサー1
存在するzsh
:
() {print -rC1 -- ${(u)@}} ${~^${(f)"$(<.gitignore)"}}(ND)
どこ:
() {body} args
パラメーターを含む匿名関数呼び出し。print -rC1 -- ${(u)@}
関数の本体として列にprint
固有の引数を表示します(フラグは重複項目を削除します)。これらのファイル/ディレクトリを削除するには、に置き換えます。r
1
C
u
u
print -rC1
rm -rf
"$(<.gitignore)"
.gitignore
末尾の改行文字(存在する場合)を除く内容に展開されます。引用符はIFS分割を防ぐためのものです。${(f)param}
パラメータ拡張を行番号f
(改行とも呼ばれる)に分割します。${~param}
結果の単語のワイルドカードを許可します。${^array}text
rcやfishと同じ方法で配列を拡張します。たとえば、が$array
含まれている場合は代わりに展開されます。A
B
Atext
Btext
A
Btext
(ND)
隠しファイルをスキップせず、一致が失敗したためにエラーが発生しないように修飾子を[N]ullglob
追加します。[D]otglob