web-dev-qa-db-ja.com

「fdupes」で重複を見つけた場合、フォルダを削除から除外する

複数のデバイスと同期されたディレクトリを持つ多くのユーザーのように、私は重複したメディアファイルのかなり一定のストリームを持っています。定期的に、重複を削除するのが好きです。新しい「同期パラダイム」に移行するときはよくあります。 (前回はNextcloudでした。今回はSyncthingです。)fdupesの引数として指定したパス全体を検索したいのですが、検索パスの1つからファイルを削除しようとしないようにします。どうすればよいですか?私はまた、fdupesの代替案を受け入れています。

参照: https://github.com/adrianlopezroche/fdupes

1
Jesse Adelman

注意:

-dまたは--deleteを使用する場合は、偶発的なデータ損失を防ぐために注意が必要です。

オプション-sまたは--symlinkと一緒に使用すると、ユーザーは、ポイントするファイルを削除するときに誤ってシンボリックリンクを保持する可能性があります。

ディレクトリを複数回指定すると、すべてのファイルが独自の重複としてリストされ、データが失われます。

fdupesのバージョン1.6.0から-oまたは--orderオプションが追加され、パス名で出力を並べ替えることができるため、お気に入りのディレクトリを簡単に保持できます。 (デフォルトでは、並べ替えはすべてのバージョンのファイル変更時間によるものです。)

絶対ディレクトリ名を使用する場合は、先頭に追加の/をプレフィックスとして付けて最初にソートすることにより、お気に入りのディレクトリが常に出力の最初になるようにすることができます。たとえば、ディレクトリ/a/aおよび//b/bは、//bが最初に出力されるようにソートされます。 (これは、/---mydir--/の前にソートされる//のようなディレクトリ名を使用しないことを前提としています)。

次に、オプション-fまたは--omitfirstを使用して、リストされた一連の一致の最初のファイルを非表示にするか、(最初にマニュアルを読む:これによりファイルが削除されます--delete --noprompt、この最初のファイルは削除されたファイルではありません。

したがって、原則としてコマンドラインは

fdupes -r -f -o name //myfavourite/directory/path /dir2 /dir3 ...  >listtodel

これにより、削除するファイル名のリストが生成されます。たとえば、リストをxargsに渡します。実際の削除を行うには、上記のオプションを非対話的に追加します。

この1つのディレクトリ内に完全に重複がある場合でも、出力でお気に入りのディレクトリのファイルが見つかる可能性があることに注意してください。

同じ方法で、ディレクトリをお気に入りの保存順序に並べ替えることができます。 ////dir1///dir2//dir3/dir4

3
meuh