0

次のコマンドがあり、ディレクトリが見つかっfindて驚いています。.gitなんで?

$ find . ! -name '*git*' | grep git 
./.git/hooks
./.git/hooks/commit-msg
./.git/hooks/applypatch-msg.sample
./.git/hooks/prepare-commit-msg.sample
./.git/hooks/pre-applypatch.sample
./.git/hooks/commit-msg.sample
./.git/hooks/post-update.sample
4

4 に答える 4

2

find はファイルを検索し、見つかったファイルの名前に検索パターンが含まれていないためです (man ページを参照してください)。-pruneスイッチを介して問題のあるディレクトリを削除する必要があります。

find . -path ./.git -prune -o -not -name '*git*' -print |grep git

ディレクトリを find から除外するを参照してください。指図

[編集] なしの代替案-prune(およびはるかに自然な私見):

find . -not -path "*git*" -not -name '*git*' |grep git
于 2013-10-18T22:36:17.073 に答える
0

これは私が必要なものです:

find . ! -path '*git*'
于 2013-10-18T22:46:24.683 に答える