同じ中身のファイルはどれ?
二つのディレクトリDIR1とDIR2内で同じファイルをリストアップしようと思ったら、こんな感じにするしかないかな?ファイルパスに空白とかが無い前提。 $ paste <(find DIR1 -type f | sort) <(find DIR2 -type f | sort) | while read a b; do diff -q $a $b > /dev/null && echo $a $b; done
2019-01-18 14:54:38(cd DIR1 && find -type f -exec sh 'for f in "$@"; do diff -q -- "$f" "../DIR2/$f" >/dev/null && printf '%s\n' "$f"; done' sh {} +) 自分ならこんなふうにするかなぁ。ファイル名は任意でも大丈夫なはず。 #シェル芸 twitter.com/papiron/status…
2019-01-18 16:08:35diff -qrs DIR1 DIR2 | grep 'identical$' twitter.com/papiron/status…
2019-01-18 16:46:20ディレクトリ構成やファイルの名前が同じ2つのディレクトリ間で、ファイルの中身が同じファイル一覧を取得するやり方、いろんなリプライがあって知見がありましたね。違うファイルの場合はdiff -rでええんですが、同じものの一覧ってのが意外と???だったので。
2019-01-18 17:08:52全部ハッシュ取って、sortで並び替えてからuniqするとか? twitter.com/papiron/status…
2019-01-18 20:18:422つのディレクトリ(ディレクトリ構造やファイル名が同じ)で、同じ中身のファイルをリストアップするやり方についてまとめてみました。 同じ中身のファイルはどれ? - Togetter togetter.com/li/1310058 @togetter_jpさんから
2019-01-18 18:14:23@neunetneucom パスに空白が無い場合なら、これでも出来ました!ありがとうございます。 $ cat <(find DIR1 -type f) <(find DIR2 -type f) | xargs md5sum | sort | awk '{print $2,$1}' | uniq -f 1 -d
2019-01-18 20:44:37