I’m trying to find the files existing in one directory but not in the other, I tried to use this command:
diff -q dir1 dir2
The problem with the above command that it finds both the files in dir1 but not in dir2 as well as the files in dir2 but not in dir1,
I am trying to find the files in dir1 but not in dir2 only.
Here’s a small sample of what my data looks like
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
Another question on my mind is how can I find the files in dir1 but not in dir2 or dir3 in a single command?
Advertisement
Answer
diff -r dir1 dir2 | grep dir1 | awk '{print $4}' > difference1.txt
Explanation:
diff -r dir1 dir2shows which files are only in dir1 and those only in dir2 and also the changes of the files present in both directories if any.diff -r dir1 dir2 | grep dir1shows which files are only in dir1awkto print only filename.