
ハードドライブ上のいくつかのファイルを整理していて、フォルダーの古いコピーがあります。フォルダー 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