現在のパスの.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
答え2
find
コマンドの知識が不足して効率が悪くなりましたが、おそらく同じように便利で、おそらくより読みやすい1行を使用しましたgrep
。
find . -type d | grep -v "/\.git"