Cygwin diff не будет исключать файлы, если в шаблон включен каталог - PullRequest
1 голос
/ 06 января 2011

Мне нужно сделать рекурсивный анализ с использованием cygwin, который должен исключить все файлы .xml из определенных каталогов, но не из других каталогов.В соответствии с опцией --help, я смогу сделать это с опцией --exclude = PAT, где PAT - это шаблон, описывающий файлы, которые я хочу исключить из diff.

Если я сделаю это:

diff -rw --exclude="classes/Services.xml" 

diff не игнорирует файл Services.xml в каталоге классов.Если я делаю это

diff -rw --exclude="Services.xml"

, то diff игнорирует файл Services.xml во всех каталогах.

Мне нужно сделать что-то вроде этого:

diff -rw --exclude="*/generated/resources/client/*.xml"

, чтобыигнорировать все XML-файлы в каталоге * / генерируется / resources / client /.

Всякий раз, когда я добавляю информацию о пути к шаблону --exclude, cygwin не игнорирует файлы, указанные в шаблоне.

Есть ли способ заставить cygwin diff распознавать шаблон, который идентифицирует определенные файлы в определенных каталогах?Кажется, он вообще не может обрабатывать какую-либо информацию каталога.

Ответы [ 2 ]

0 голосов
/ 18 января 2011

Используйте find с подходящим выражением.Если предположить, что ваши деревья находятся в tree1/ и tree2/, то

$ find tree1 -type f ! -path '*classes/Services.xml' |
    while read f; do diff -rw "$f" "tree2${f#tree1}"; done

Хммм, так как это пропускает файлы в tree2/, которые не существуют в tree1/.

0 голосов
/ 14 января 2011

В итоге мне пришлось написать утилиту Java, которая обходит дерево каталогов, исключая определенные каталоги, и вызывает diff на каждом уровне.

...