16

I want to see, recursively, files that are different in two directories. Diff can do this, but it shows me the line-by-line differences, which I don't want. Is there a tool that does this, or a way to do this with Diff ( I read the man page, I didn't see anything ) ?

29

What about

diff -rq DIR1 DIR2

or

diff -rqb DIR1 DIR2

-r is recursive

-q is for brief, and will just tell you if the files are different (i.e., it won't show the line-by-line differences)

-b ignores whitespace

  • 1
    -b ignores white space changes. Use -q or --brief for the brief option. – Doug Harris Oct 9 '09 at 18:59
  • And I've just upvoted this. I just tried the brief option for the first time. It's very nice output -- shows not just which files are different but identifies which files exist in one directory and not the other. – Doug Harris Oct 9 '09 at 19:02
  • Thanks Doug; I guess I originally had my option rotated 180 degrees. ;) Fixed now. – rob Oct 9 '09 at 21:18
2

You're looking for the -q option:

dlamblin$ diff -r a b
diff -r a/a b/a
0a1,2
> 
> 
Only in b: b
dlamblin$ diff -qr a b
Files a/a and b/a differ
Only in b: b
1

One way to do this is to do

diff dir1 dir1| grep "diff "

It will still do a line-by-line comparison, but each file comparison begins with "diff dir1/file dir2/file", so grepping "diff " will show only those lines ( i.e. the files that are different ).

1

If you're an emacs user, check out ediff-directories. You can see the file differences and then drill down into line-by-line differences if you need to see why they're different.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.