fdupesで重複ファイルを削除する方法は?


14

実行するfdupesと、30,000を超える重複ファイルが見つかります。1つのファイルを保持し、他のすべての重複を削除する必要があります(一部はシステムファイルであるため)。重複ファイルのすべてのグループに対して「1または2またはすべて」を押すことなく、これを行うコマンドまたはスクリプトを教えてください。

回答:


22

これを静かに実行したい場合は、これを実行できます(ラックスペースブロックストレージで実行されている150 GBの重複をクリアするために使用しました..£kerching !!)

fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)

デュープを削除する代わりにゴミ箱に移動するオプションはありませんか?
オーガスティンリーディンガー

2
for f in $(fdupes -f .); do gvfs-trash $f; done
やり

2
@AugustinRiedinger:さらに良いのはfdupes -f . | xargs -rd '\n' -- gvfs-trash、スペースと特殊文字を含むファイル名、または多くのファイルがある場合です。
デビッドフォースター

@DavidFoersterでは、ファイル名に改行が含まれている場合があり、コマンドが破損します。
ルスラン

@Ruslan:それは正しいですが、現時点でfdupesはnullで終了するレコードのオプションが提供されていないため、より良いオプションはありません。それは間違いなく、はるかに優れてfor f in $(fdupes ...)います。:-]
デビッドフォースター

9

fdupes 豊富なCLIがあります:

fdupes -r ./stuff > dupes.txt

その後、重複するdupes.txtディレクトリを削除するのは、問題のディレクトリを確認して削除するのと同じくらい簡単でした。fdupesまた、あなたが進むにつれて重複を削除するように促すことができます。

fdupes -r /home/user > /home/user/duplicate.txt

コマンドの出力はに入りduplicate.txtます。

fdupes ファイルのサイズとMD5ハッシュを比較して、重複を見つけます。

詳細な使用情報については、fdupesマンページを確認してください。


私は方法を発見しました。はい1 | fdupes -rd / mnt / hda5 / midi_files
user84055


2

私はこの安全な方法を使用します:

スクリプトを作成し、複製されたファイルを新しいフォルダーに移動します。元のフォルダー以外のフォルダーに移動すると、fdupesは2回目のスキャンで重複したファイルを報告せず、削除した方が安全です。

#!/bin/bash

# Save default separator definitions
oIFS=$IFS
# define new line as a separator, filenames can have spaces
IFS=$'\n';

# For each file (f) listed as duplicated by fdupes, recursively
  for f in `fdupes -r -f .`
  do
    # Log the files I'm moving
    echo "Moving $f to folder Duplicates" >> ~/log.txt
    # Move the duplicated file, keeping the original in the original folder
    mv $f Duplicates/
  done

# restore default separator definitions
IFS=$oIFS

1

私はかなりからfslintDupeGuruを使用しました。

  • FSlintは、ワイルドカードおよびその他のクリーンアップ方法による選択をサポートしています
  • DupeGuruは正規表現をサポートしています

どちらも10000を超えるファイル/フォルダーを処理できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.