Ответ 1
Возможно, это немного косвенно, но это должно сработать. Вы можете использовать find
, чтобы получить список файлов, которые не соответствуют шаблону, а затем "исключить" все эти файлы:
find a b -type f ! -name 'crazy' -printf '%f\n' | diff -r a b -X -
-X -
сделает diff
прочитанным шаблоны из stdin и исключит все, что соответствует. Это должно работать, если в ваших файлах нет таких забавных символов, как *
или ?
. Единственный недостаток заключается в том, что ваш diff не будет включать команду find
, поэтому указанная команда diff
не так полезна.
(Я тестировал его только с GNU find
и diff
).
ИЗМЕНИТЬ
Поскольку только не-GNU find
не имеет -printf
, в качестве альтернативы можно использовать sed
:
find a b -type f ! -name '*crazy*' -print | sed -e 's|.*/||' | diff -X - -r a b
Это также предполагает, что не-GNU diff
имеет -X
, который я не знаю.