Table of Contents

ignore subdirectories

One way is to call diff without the –recursive (-r) option and use grep to filter out the unwanted messages:

 % diff dir1 dir2 | grep -v "^Only in "

or

 % diff -q dir1 dir2 | grep -v "^Only in "

See https://stackoverflow.com/questions/30446490/diff-only-compare-files-and-ignore-subdirectories/ for some sample tests using this idea.

diff word by word

git diff --word-diff --no-index -- foo bar

or

git diff -U0 --word-diff --no-index -- foo bar

You can run this command even if the files are not part of a git repository.

Ref:- https://unix.stackexchange.com/a/330807/198064

Related commands:

head and diff

To diff headers of two files without creating any temporary files

% diff <(head -n 1 foo.20170102) <(head -n 1 foo.20170104)

ignore newline endings

tags | ignore line endings

diff --strip-trailing-cr file1 file2
$ diff --help | grep -i strip
      --strip-trailing-cr         strip trailing carriage return on input

Ref:- https://stackoverflow.com/questions/40974170/how-can-i-ignore-line-endings-when-comparing-files