「rmlint」を使用して、ある場所からのみ重複エントリを削除し、他の場所を変更しないままにする方法は?

「rmlint」を使用して、ある場所からのみ重複エントリを削除し、他の場所を変更しないままにする方法は?

/path/to/a2つの場所があり、両方の/path/to/bパスで重複ファイルを見つけて/path/to/bプロジェクトのエントリのみを削除する必要があります。 rmlintかなり大きな削除スクリプトを生成しますが、これには両方のパス(空のフォルダを含む)から削除する項目が含まれています。

rmlintこの結果を得るために、次のパラメータを使用して実行しましたが、削除対象としてのみ選択されたとします/path/to/a

rmlint -g -e -S p /path/to/a /path/to/b

答え1

文書によると、タグだけが必要です

タグを使用するには//。 // 区切り文字の後のすべてのパスは「タグ」と見なされ、可能であれば生のパスと見なされます。

たとえば、rmlint a // b「a」パスを重複としてマークし、「b」を元のパスとして表示します。

-k表示されたファイルを絶対に削除したくない場合は、()オプションがあります--keep-all-tagged。別のオプションは、表示されたパスに元のパスを持つ重複エントリのみを検索する-m()です。--must-match-tagged

(文書から取得)簡単な例は次のとおりです。古いバックアップを含むポータブルバックアップドライブがあります。ちょうどホームフォルダを新しいバックアップドライブにバックアップしました。古いバックアップドライブを再フォーマットして別の目的に使用しようとしています。しかし、まず、以前のドライブに他の場所では見つからないものがあるかどうかを確認したいと思います。古いドライブはにインストールされます/media/portable

$ rmlint --keep-all-tagged --must-match-tagged /media/portable // ~

役に立ったことを願っています!

答え2

私がしたことは次のとおりです。

$ rmlint -g sourceDir // referenceDir -km
  • g:進行状況バー
  • k: --すべてのタグを保持
  • m:--マークと一致する必要があります

しかし、ソースディレクトリが複数ある場合、--must-match-taggedオプションは時々尊重されないことがわかりました。

関連情報