別のディレクトリに重複していないファイルを見つける方法

別のディレクトリに重複していないファイルを見つける方法

ドキュメントの古いバックアップがあります。現在のDocumentsディレクトリには、これらのファイルがたくさん存在します異なる場所で異なる名前でバックアップに存在するファイルを表示する方法を探しています。ないディレクトリ内に存在しDocuments、できれば見栄えがよくGUI風で、簡単に概要を把握できるような多く文書の。

この質問を検索すると、多くの人がその逆の方法を探しています。次のようなツールがありますFSlintそしてデュペグル、重複して表示されます。反転モードはありません。

答え1

CLI を使用する準備ができている場合は、次のコマンドが機能します。

diff --brief -r backup/ documents/

これにより、各フォルダに固有のファイルが表示されます。必要に応じて、ファイル名の大文字と小文字を無視することもできます。--ignore-file-name-case

例:

ron@ron:~/test$ ls backup/
file1  file2  file3  file4  file5
ron@ron:~/test$ ls documents/
file4  file5  file6  file7  file8
ron@ron:~/test$ diff backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
ron@ron:~/test$ diff backup/ documents/ | grep "Only in backup"
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3

さらに、ファイルが異なる場合にのみレポートしたい場合(実際の「違い」をレポートしたくない場合)、--brief次のようにオプションを使用できます。

ron@ron:~/test$ cat backup/file5 
one
ron@ron:~/test$ cat documents/file5
ron@ron:~/test$ diff --brief backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Files backup/file5 and documents/file5 differ
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8

meld同じことができるビジュアル diff ツールがいくつかあります。meld次の方法で、universe リポジトリからインストールできます。

sudo apt-get install meld

「ディレクトリ比較」オプションを使用します。比較するフォルダを選択します。選択後、それらを並べて比較できます。

ここに画像の説明を入力してください

fdupesは重複ファイルを見つけるのに優れたプログラムですが、探している重複していないファイルはリストされません。ただし、とfdupesの組み合わせを使用して、出力に含まれていないファイルをリストすることはできます。findgrep

次の例では、 に固有のファイルを一覧表示しますbackup

ron@ron:~$ tree backup/ documents/
backup/
├── crontab
├── dir1
│   └── du.txt
├── lo.txt
├── ls.txt
├── lu.txt
└── notes.txt
documents/
├── du.txt
├── lo-renamed.txt
├── ls.txt
└── lu.txt

1 directory, 10 files
ron@ron:~$ fdupes -r backup/ documents/ > dup.txt
ron@ron:~$ find backup/ -type f | grep -Fxvf dup.txt 
backup/crontab
backup/notes.txt

答え2

非常に大きなファイルがたくさんある場合に同じ問題が発生しました。重複に対する解決策はたくさんありますが、逆検索に対する解決策はなく、また、データ量が多いためコンテンツの差分を検索したくありませんでした。

そこで私は「isolated-files」を検索するためのPythonスクリプトを書きました

isolated-files.py --source folder1 --target folder2

これにより、folder1 にはない (これも再帰的に)、folder2 内のファイルがすべて (再帰的に) 表示されます。ssh 接続や複数のフォルダーでも使用できます。

見るhttps://github.com/ezzra/isolated-files

答え3

異なるディレクトリに異なる名前でアーカイブされた何千ものファイルを含む古いバックアップをマージするための最良のワークフローは、デュペグル結局のところ、それは重複タブからFSlint、しかし、ソースを追加するという重要な機能が追加されました。'参照'

  1. ターゲットディレクトリ(例~/Documents:)を参照
    • 参照読み取り専用であり、ファイルは削除されません
  2. バックアップディレクトリを次のように追加します普通
  3. 重複を検索します。バックアップから見つかった重複をすべて削除します。
  4. バックアップディレクトリには一意のファイルのみが残ります。無料ファイル同期またはメルドこれらをマージするか、手動でマージします。

古いバックアップディレクトリが複数ある場合は、最初に最新のバックアップディレクトリをこのようにマージし、次にこのバックアップディレクトリを参照メインのドキュメントディレクトリにマージする前に、古いバックアップから重複部分を削除します。これにより、多くバックアップからマージするのではなく、ゴミ箱に捨てたい固有のファイルを削除する必要がない作業です。

プロセス中に古いバックアップをすべて破棄した後は、必ず新しいバックアップを作成してください。 :)

答え4

jdupes-I --isolateこれにはと という2 つの便利なオプションがあります-u --print-unique

たとえば、backupディレクトリ内の一意のファイルのみを一覧表示するには、次のようにします。

jdupes -Iru Documents backup |grep '^backup

関連情報