検索出力から未追跡ファイルを削除する方法は?

検索出力から未追跡ファイルを削除する方法は?

私のプロジェクトディレクトリを見たいのですが、Gitが追跡しているfindファイルだけを探したいです。findGitが追跡するファイルにのみ結果を制限するために出力フィルタ(または他の方法)として使用できるコマンドはありますか?

例:

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))

おすすめ記事