Столкнувшись с той же проблемой, что и Почему не «найти» подрезать так, как я думаю, это должно?,
но этот принятый ответ не работает для меня:
Вот мои файлы:
$ find .
.
./resources
./resources/sitewide
./resources/sitewide/test.c
./resources/sitewide/.svn
./resources/sitewide/.svn/test.c
./resources/test.c
./resources/.svn
./resources/.svn/test.c
./test.c
./users
./users/avatars
./users/avatars/test.c
./users/avatars/.svn
./users/avatars/.svn/test.c
./users/test.c
./users/.svn
./users/.svn/test.c
./temporary
./temporary/test.c
./temporary/.svn
./temporary/.svn/test.c
./.svn
./.svn/test.c
Вот каков результат при использовании принятого ответа:
$ find -type d -path '.svn' -prune -o -print
.
./resources
./resources/sitewide
./resources/sitewide/test.c
./resources/sitewide/.svn
./resources/sitewide/.svn/test.c
./resources/test.c
./resources/.svn
./resources/.svn/test.c
./test.c
./users
./users/avatars
./users/avatars/test.c
./users/avatars/.svn
./users/avatars/.svn/test.c
./users/test.c
./users/.svn
./users/.svn/test.c
./temporary
./temporary/test.c
./temporary/.svn
./temporary/.svn/test.c
./.svn
./.svn/test.c
Есть две проблемы с принятым ответом, во-первых, .svn все еще перечислены, и во-вторых, не только каталоги, но и файлы также перечислены.
Эти проблемы я действительно могу исправить. но мой вопрос
как найти эти .c файлы не в .svn каталогах?
Я пробовал все следующее, но у меня ничего не получалось:
find . -path '*/.svn' -prune -name "*.c" -print
find . -path '*/.svn' -prune -o -name "*.c" -print
find . -path '*/.svn' -prune -name "*.c" -o -print
find . -path '*/.svn' -prune -a -name "*.c" -print
Пожалуйста помоги.