フォルダー A 内のすべてのファイルがフォルダー B に存在することを確認するにはどうすればよいですか?

フォルダー A 内のすべてのファイルがフォルダー B に存在することを確認するにはどうすればよいですか?

ハードドライブ上のいくつかのファイルを整理していて、フォルダーの古いコピーがあります。フォルダー A (古いコピー) 内のすべてのファイルがフォルダー B に存在することを確認したいです。各フォルダーには少なくとも 200 個のファイルが含まれており、そのほとんどは重複している可能性があります。

注意: ファイル名を確認するだけでなく、内容が同じであることも確認する必要があります (à la fdupes)。

fdupes逆の操作(つまり、どのファイルかを調べる)を行う方法があるかどうか、マニュアルページを確認しました。しないコピーがあるかどうか調べましたが、何も見つかりませんでした。機能が存在するとしても、フォルダー B にのみ存在するファイルが残っています。

次の 2 つの質問は似ていますが、Windows のみなのであまり役に立ちません。

前もって感謝します。

答え1

重複ファイルのリストがすでにある場合は、それをすべてのファイルのリストと比較して、重複するファイルを見つけます。

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
  • -w単語全体のみを照合します(部分文字列ではないため、ファイルはabcd一致しませんabc
  • -Fパターンを正規表現ではなくリテラルとして扱う
  • -f指定されたファイル (-この場合は標準入力) を、照合する表現のリストとして使用します。
  • -vご存知のとおり、一致しない行が表示されます。

これにより、フォルダーの 1 つにのみ存在するファイルを含むリストが出力されるはずですdir1。次のようにフォルダー A (以下、 と呼びます)の名前をスキミングまたは grep することで、すべてのファイルがフォルダー B にあることを簡単に確認できます。

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f) | grep -F dir1

関連情報