3

Я использую MacOSX 10.5.8

Я запускаю следующее:

~/Sites/jjprof/trunk/content > find . -type d -name '*svn' -prune
./.svn
./resources/.svn
./resources/sitewide/.svn
./temporary/.svn
./users/.svn
./users/avatars/.svn

Я ожидаю, что эта команда будет игнорировать все подкаталоги .svn; вместо этого он отображает их.

find . -name '*svn' -prune 

делает то же самое.

2 ответа2

6

Попробуй это:

find -type d -path '.svn' -prune -o -print

От man find в разделе , посвященном -name

Чтобы игнорировать каталог и файлы в нем, используйте -prune ; см. пример в описании
-path

В разделе -path:

Чтобы игнорировать целое дерево каталогов, используйте -prune вместо проверки каждого файла в дереве. Например, чтобы пропустить каталог src/emacs и все файлы и каталоги в нем, и напечатать имена других найденных файлов, сделайте что-то вроде этого:

             find . -path ./src/emacs -prune -o -print

Из раздела "Примеры":

Однако само действие -prune возвращает true, поэтому следующий параметр -o гарантирует, что правая часть будет оценена только для тех каталогов, которые не были удалены (содержимое удаленных каталогов даже не посещается, поэтому их содержимое не имеет значения ).

2

найти ручные состояния, что чернослив "игнорирует предыдущий путь ...", поэтому команда должна быть

find . -prune -type d -name '*svn'

Это потому, что вы можете иметь что-то вроде

find -path . -name '*svn' -o -path './notimportantdir' -prune

который находит '* svn' в текущем пути, кроме тех, которые находятся в notimportantdir

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .