バックアップに問題があり、HDに何度かフォルダがあります。メインの「フォルダツリー」が1つあり、そのままにしておきたい。 fdupesが削除したくないディレクトリ内のファイルを削除しないようにするにはどうすればよいですか?
別の重複検索ユーティリティはありますか?
別の重複検索ユーティリティはありますか?
rmlint を使用すると、-keep-all-taggedオプションを使用して必要な処理を正確に実行できます。
$ rmlint --types=duplicates --keep-all-tagged /path/to/dupes /other/path/to/dupes // main/folder/tree
これは、最初に指定されたディレクトリに優先順位を付けるための短いスクリプトです。ファイルを直接削除するのではなく、削除するリストを印刷するだけです。次のルールに従います。
dir1
からファイルを印刷しないでくださいdir1
にないファイルがある場合は、印刷しないでください。
#!/usr/bin/env bash
# priority_dup.sh dir1 dir2 [dir3 ...]`
set1=() # List collects all matching files for a set.
IFS=$'\n'
fdupes -r "$@" | while read i; do
if [[ "$i" == "" ]]; then
# Create new set, minus all files from dir1.
set2="$(echo "${set1[*]}" | grep -v "^$1/")"
# If the sets are different, then we can print files for deletion.
if [[ "${set1[*]}" != "$set2" && "$set2" != "" ]]; then
echo "$set2"
echo ""
set1=()
fi
else
set1+=("$i")
fi
done
ファイルに保存し、ファイルを実行可能ファイルとして設定して、試してみてください。
プロセスを遅くして、注意してみませんか
fdupes
から重複の比較を取得し、ファイルに入れます。
fdupes -r /path/to/start > filesToDelete
次に、自分の速度で、保持したいディレクトリまたはファイルをfilesToDelete
から削除できます。
ディレクトリ全体を削除するには
sed -i '|/directoryToKeep/|d' filesToDelete
好みのテキストエディタでfilesToDelete
を操作し、必要な各ファイルのコピーの先頭にマーカー(おそらくx?)を配置しますkeepこれにより、何を追跡できるようになります。あなたがやった、そしてあなたが変更を確信しているとき
cat aFile | xargs -d "\n" rm
rm
は、xの付いた各行(およびfdupes
によって生成されたコメントやその他の行)でエラーをスローしますが、これらのファイルには何もしません。ただし、filesToDelete
内のマークされていない有効なファイル名エントリはすべて削除されます。