私のプロジェクトディレクトリを見たいのですが、Gitが追跡しているfind
ファイルだけを探したいです。find
Gitが追跡するファイルにのみ結果を制限するために出力フィルタ(または他の方法)として使用できるコマンドはありますか?
例:
find . -name '*.postinst' | git-no-untracked
上記の私の用途は何ですかgit-no-untracked
?
ベストアンサー1
zsh
移行オプションが提供されると、次のリストが表示されます。トレースファイル配列から:
tracked_files=(${(0)"$(git ls-files -z)"})
次に、関心のあるファイルのリストのクロスアクションを実行します。たとえば、次のようになります。
postinst_files=(**/*.postinst)
tracked_postinst_files=(${postinst_files:*tracked_files})
zsh globでできることのほとんどを実行できますfind
。たとえば、最後の2時間に最後に変更された一般的なファイルだけが必要な場合:
postinst_files=(**/*.postinst(.mh-2))
または、トレースファイルのリストから直接パターンを検索することもできます。
tracked_postinst_files=(${(M)tracked_files:#*.postinst})
または、ファイルが追跡されたファイルのリストにあることを確認するためにglob修飾子関数を定義します。
istracked() ((${tracked_files[(Ie)${1-$REPLY}]}))
tracked_postinst_files=(**/*.postinst(+istracked))