「.git」ディレクトリのサブパスにないディレクトリのみを一覧表示するにはどうすればよいですか?

「.git」ディレクトリのサブパスにないディレクトリのみを一覧表示するにはどうすればよいですか?

現在のパスの.git/ディレクトリ外部ディレクトリのみをリストしたいと思います。

私はこれを試しています:

find . -path "**/.git" -prune -o -print -type d

.gitディレクトリは除外されますが、コードスニペットにはファイルも一覧表示されます。しかし、それは私が指定したものと同じではないはずです-type d。このfindユーティリティを私が説明したように動作させるにはどうすればよいですか?

ベストアンサー1

-print-type d以前使用したため、find最初の式を満たしていないすべての項目が印刷されます。

あなたはそれらを交換したいと思います:

find . -path '*/.git' -prune -o -type d -print

または省略できるように述部を使用してください-print

find . ! \( -path '*/.git' -o -path '*/.git/*' \) -type d

また、アスタリスクは1つだけ使用する必要があり*/.git、2つのアスタリスクは**パターンマッチングに特に意味がありませんfind-name代わりに、以下を使用すると、より簡単で移植性に優れ、少し速くすることができます-path

find . -name .git -prune -o -type d -print

おすすめ記事