Files
我如何找到與 .gitignore 等模式對應的所有文件
舉個例子。我有一個像
.myignore
. 在該文件中,我有如下字元串:.vs/ *.suo *.user *.log
然後我想找到與 file 中的模式匹配的所有文件
.myignore
。
在
zsh
:() {print -rC1 -- ${(u)@}} ${~^${(f)"$(<.gitignore)"}}(ND)
在哪裡:
() {body} args
是一個帶有參數的匿名函式呼叫print -rC1 -- ${(u)@}
作為函式的主體,在r
上看到1
C
它的u
唯一參數(u
標誌刪除重複項)。如果要刪除這些文件/目錄,請替換為print -rC1
。rm -rf
"$(<.gitignore)"
擴展為.gitignore
減去尾隨換行符(如果有)的內容。引號是為了防止 IFS 分裂。${(f)param}``f
拆分 line eeds(又名換行符)上的參數擴展。${~param}
啟用對結果詞的通配${^array}text
以類似 rc 或 fish 的方式擴展數組,其中 if$array
containsA
,B
例如,擴展為Atext
Btext
而不是A
Btext
.(ND)
添加[N]ullglob
and[D]otglob
限定符,因此不會跳過隱藏文件並且失敗的匹配不會導致錯誤。