One-way diff command?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting One-way diff command?
# 1  
Old 05-28-2013
Lightbulb One-way diff command?

Hello,
I am trying to find the different files between multiple directories in Linux, here is a small assumption of what is inside the directories

dir1 dir2 dir3
1.txt 1.txt 1.txt
2.txt 3.txt 3.txt
5.txt 4.txt 5.txt
6.txt 7.txt 8.txt

I am using the following command

diff -qr dir1 dir2

I have 2 issues, first i would like to find the files that are in `dir1` but NOT in `dir2` ONLY (my command above fails because looks up the stuff in `dir2` but not in `dir1`).
The other thing I want to ask is how can i find the files in `dir1` but not in `dir2` or `dir3` in one go? Smilie

Many thanks,
# 2  
Old 05-28-2013
So, when you have mis-matched file names, do you get some output that says "Only in dir2" in it? It might be that the -q is losing this bit.

Try:-
Code:
diff dir1 dir2|grep "^Only in"


I hope that this helps.

Robin,
Liverpool/Blackburn
UK
# 3  
Old 05-28-2013
Quote:
Originally Posted by rbatte1
So, when you have mis-matched file names, do you get some output that says "Only in dir2" in it? It might be that the -q is losing this bit.

Try:-
Code:
diff dir1 dir2|grep "^Only in"


I hope that this helps.

Robin,
Liverpool/Blackburn
UK
Thanks Robin, yes it is working now. But I am still unable to compare more than 2 files, say if I want the files that are in dir1 but not in dir2 or dir3, would I be able to do that using the diff command?
# 4  
Old 05-28-2013
Hi.

Here is one technique:
Code:
#!/usr/bin/env bash

# @(#) s1	Demonstrate difference of files.

# Utility functions: print-as-echo, print-line-with-visual-space, debug.
# export PATH="/usr/local/bin:/usr/bin:/bin"
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C grep

pl " Input data file data.?:"
head data.?

pl " Results:"
grep -vf <( cat data.[23] | sort -u ) data.1

exit 0

producing:
Code:
% ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution        : Debian GNU/Linux 5.0.8 (lenny) 
bash GNU bash 3.2.39
grep GNU grep 2.5.3

-----
 Input data file data.?:
==> data.1 <==
1.txt
2.txt
5.txt
6.txt

==> data.2 <==
1.txt
3.txt
4.txt
7.txt

==> data.3 <==
1.txt
3.txt
5.txt
8.txt

-----
 Results:
2.txt
6.txt

See man pages for details.

Best wishes ... cheers, drl
# 5  
Old 05-28-2013
Have you considered the little used diff3 command. I too have never used it, but I'm aware it exists on many flavours. Have a read of the manual page and see if it better meets your needs.



Robin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Help with diff command

Platform :Oracle Linux 6.4 Shell : bash In the below sample, although the lines in a.txt and b.txt are jumbled up, there is only one difference : b.txt has an extra line NETHERLANDS $ cat a.txt SPAIN NORTH KOREA PORTUGAL GERMANY SYRIA $ $ $ cat b.txt GERMANY NORTH KOREA SPAIN... (6 Replies)
Discussion started by: John K
6 Replies

2. UNIX for Dummies Questions & Answers

Re:using the diff command

Hi Guys I have a situation where I would like to use the diff command but I would like to see "number" of differences and than send it through and if statement and than view the difference if greater than 1. Eg. diff file1 file2 > than gives the "number" and I than say - if number >1... (3 Replies)
Discussion started by: Prega
3 Replies

3. UNIX for Dummies Questions & Answers

Diff command of two files

Hi, I use the diff command to compare two files and append this output to a file. I would like to now not only produce the differences but be able to output the total number of changes made, the number of new files added and the number of files deleted, is there I can do this using the diff... (2 Replies)
Discussion started by: cyberfrog
2 Replies

4. Shell Programming and Scripting

diff command help

Hi all diff file1 file 2 command will give us op of diff between two file. But it aslo give its position and sign "<" or ">". I dont want position and sign in op. Only diff of content should be come as op. Kindly help me for this. Regards Jaydeep (1 Reply)
Discussion started by: jaydeep_sadaria
1 Replies

5. UNIX for Dummies Questions & Answers

diff command

Is there any option for the diff command (or maybe an entirely different command) that will give you only the text that differs between two files? When I use diff file1 file2, if any text on that line differs from one file to the next it'll print out the entire line. I'd like to see only the text... (2 Replies)
Discussion started by: red baron
2 Replies

6. AIX

diff command

hello i've two files. how i get the diff between the two files to new file. thanks best regards ariec (3 Replies)
Discussion started by: ariec
3 Replies

7. Shell Programming and Scripting

need help in diff command :

i have 2 file named test1,test2 contents of test1: 1 2 3 --------------------------- contents of test2: 1 2 3 4 5 -------------------------------------------------------- my desired o/p should be: diff test2 test1 4 (5 Replies)
Discussion started by: ali560045
5 Replies

8. Shell Programming and Scripting

diff command

All, How to exclude a directory while diff execution? For ex: To exclude file which we don't want to see diff, we have -x <filename>. Thanks in advance (1 Reply)
Discussion started by: Vichu
1 Replies

9. Shell Programming and Scripting

Diff command problem

Folks, I am Diff'ing 2 identical files..and the result is, it shows all the lines from 2 files (saying nothing is being matched). If I copy the content from 1 of the file and paste in a newly created file and then do the diff, it equals. 2 files are xml files. I've tried many... (4 Replies)
Discussion started by: gvsreddy_539
4 Replies

10. UNIX for Dummies Questions & Answers

diff command

Hi, I have 2 files i would like to have a DIFF command: 1.Marks differences between files or 2.Mentions just the differences Thanks :) (7 Replies)
Discussion started by: gilead29
7 Replies
Login or Register to Ask a Question