dir1
に存在するが存在しないすべてのファイルを見つける必要がありますdir2
。dir1
そして、dir2
構造が異なるため、diff -r
正しく動作しない可能性があります。
ベストアンサー1
パスなしでファイルのリストを作成してみてください。このようにして2つのディレクトリを比較できます。ただし、ファイル名はすべて異なる必要があります。同じファイル名が dir1 の他のサブディレクトリで再利用される場合、パスを削除するとファイル名の一意性が削除されます。次のように、パス名なしで各ディレクトリのリストを取得できます。
find dir1/ -exec basename {} \; | sort
find dir2/ -exec basename {} \; | sort
すべてが合わされると、次のようになります。
diff <(find dir1/ -exec basename {} \; | sort) <(find dir2/ -exec basename {} \; | sort)
fdupesの使用を提案するコメントを見ました。fdupes
確かにより良い解決策がある場合。