2つのルートフォルダAとBを指定した場合2つのフォルダ間で共通のファイルを見つける
AとBのサブフォルダ間に重複するテキストファイルを見つける方法はありますか?言い換えれば
は、私がA内の重複ファイルを検索する、またはB内いけないが、Aにし、Bにあるファイルのみ、AとB
からのファイルの交点を検討しています重複したことで
編集
私は同じ内容
2つのルートフォルダAとBを指定した場合2つのフォルダ間で共通のファイルを見つける
AとBのサブフォルダ間に重複するテキストファイルを見つける方法はありますか?言い換えれば
は、私がA内の重複ファイルを検索する、またはB内いけないが、Aにし、Bにあるファイルのみ、AとB
からのファイルの交点を検討しています重複したことで
編集
私は同じ内容
コメント欄で示したように、私は一度だけ、各ファイルのための単一のMD5チェックサムを生成する - その後、重複チェックサムを探します。このような
何か:
find DirA -name \*.txt -exec md5sum {} + > /tmp/a
find DirB -name \*.txt -exec md5sum {} + > /tmp/b
今両方のファイルで発生するすべてのそれらのチェックサムを見つけます。このような
awk 'FNR==NR{md5[$1];next}$1 in md5' /tmp/[ab]
または多分:これらの線に沿って
ので、
awk 'FNR==NR{s=$1;md5[s];$1="";name[s]=$0;next}$1 in md5{s=$1;$1="";print name[s] " : " $0}' /tmp/[ab]
comm -1 -2 <(ls dir1 | sort) <(ls dir2 | sort)
f1
ls -1 dir1
f1
f2
f3
ls -1 dir2
f1
f4
f5
comm -1 -2 <(ls dir1 | sort) <(ls dir2 | sort)
f1
#If not on bash,then
bash -c 'comm -1 -2 <(ls dir1 | sort) <(ls dir2 | sort)'
または検索を使用して持つファイルを意味します。内容の面でDUPを見つけるために
find dir1 dir2 -type f -ls | awk -F'/' 'N[$2]++ {print $NF}'
f1
またはフルパスの
find dir1 dir2 -type f -ls | awk '{print $NF}' | awk -F'/' 'N[$2]++'
dir2/f1
。
files1=(dir1/*)
files2=(dir2/*)
for item1 in ${files1[*]}
do
ck1=$(cksum $item1 |awk '{print $1}')
for item2 in ${files2[*]}
do
ck2=$(cksum $item2 |awk '{print $1}')
if [ "$ck1" == "$ck2" ];then
echo "Duplicate entry found for $item1 and $item2"
fi
done
done
私はbashシェルではなく、cshで作業しています。そのため、強制的にbash -cを使用します。しかし、OPがbashになったら、必要はありません。 –
私は十分正確ではありませんでした。重複して私は等しい内容を意味しました。同名ではありません – Graph4Me
何 'LSを使用する方法について-1> dirX.lst'両方のディレクトリに、得られる上、' diff'ファイル? – GMichael
"dulicate text files"とはどういう意味ですか?同じ名前のファイル、同じ内容のファイル、同じ名前と内容のファイル、または同じiノードへのリンクを意味しますか?あなたはA内で複製された同じ内容のファイルを気にしますか? –
私は十分正確ではありませんでした。重複していました。同じ内容を意味し、同名ではありませんでした。 – Graph4Me