回答:
これを静かに実行したい場合は、これを実行できます(ラックスペースブロックストレージで実行されている150 GBの重複をクリアするために使用しました..£kerching !!)
fdupes -rdN dir/
r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)
for f in $(fdupes -f .); do gvfs-trash $f; done
fdupes -f . | xargs -rd '\n' -- gvfs-trash
、スペースと特殊文字を含むファイル名、または多くのファイルがある場合です。
fdupes
はnullで終了するレコードのオプションが提供されていないため、より良いオプションはありません。それは間違いなく、はるかに優れてfor f in $(fdupes ...)
います。:-]
fdupes
豊富なCLIがあります:
fdupes -r ./stuff > dupes.txt
その後、重複するdupes.txt
ディレクトリを削除するのは、問題のディレクトリを確認して削除するのと同じくらい簡単でした。fdupes
また、あなたが進むにつれて重複を削除するように促すことができます。
fdupes -r /home/user > /home/user/duplicate.txt
コマンドの出力はに入りduplicate.txt
ます。
fdupes
ファイルのサイズとMD5ハッシュを比較して、重複を見つけます。
詳細な使用情報については、fdupes
マンページを確認してください。
私はこの安全な方法を使用します:
スクリプトを作成し、複製されたファイルを新しいフォルダーに移動します。元のフォルダー以外のフォルダーに移動すると、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