Right now, this is what my code looks like:
#!/bin/bash
Dir1=$1
Dir2=$2
for file1 in $Dir1/*; do
for file2 in $Dir2/*; do
if [[ $file1 == $file2 ]]; then
echo "$file1 is contained in both directories"
fi
done
done
I am trying to compare the file names of the two directories entered and say that the file is in both directories if the filename matches. When I try to run it though, nothing is echo-ed even though I have the same file in both directories.
Files that are in both Dir1
and Dir2
:
find "$Dir1/" "$Dir2/" -printf '%P\n' | sort | uniq -d
Files that are in Dir1
but not in Dir2
:
find "$Dir1/" "$Dir2/" "$Dir2/" -printf '%P\n' | sort | uniq -u
Files that are in Dir2
but not in Dir1
:
find "$Dir1/" "$Dir1/" "$Dir2/" -printf '%P\n' | sort | uniq -u
If you want to know what's common to two directories then this is another way with much less coding.
#!/bin/bash
comm -12 <(ls -F $1) <(ls -F $2)
See man comm
for more information about the comm
utility.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With