Как сравнить два каталога с использованием diff при игнорировании несуществующих файлов?

Я хотел бы использовать diff для сравнения двух каталогов для разных файлов, используя параметр -q для краткого вывода. Однако выход загроможден множеством файлов, которые существуют только в одном каталоге, но не в другом. Могу ли я заставить diff (или использовать другой инструмент) только показывать файлы, которые отличаются и существуют в обоих каталогах?

Текущая команда, которую я использую,

diff -q <dir1> </dir1>

Любые идеи приветствуются.

2 ответа

Он печатает кучу строк, например

Only in dir1/blah: blah

правильно? Так что просто выбросьте их с помощью grep.

LC_ALL=C diff ... | grep -v '^Only in'

LC_ALL=C должен убедиться, что будет напечатано стандартное сообщение "Только в", а не какой-либо перевод.


Самый простой способ, который я нашел, - использовать:

diff -N -q <dir1> </dir1>

licensed under cc by-sa 3.0 with attribution.