백업에 문제가 있어서 이제 하드 드라이브에 폴더가 너무 많아졌습니다. 그대로 유지하고 싶은 기본 "폴더 트리"가 있습니다. fdupes가 삭제하고 싶지 않은 디렉터리의 파일을 삭제하지 못하도록 하려면 어떻게 해야 합니까?
또 다른 중복 찾기 유틸리티가 있나요?
답변1
또 다른 중복 찾기 유틸리티가 있나요?
사용린트--keep-all-tagged 옵션을 사용하여 원하는 작업을 정확하게 수행합니다.
$ rmlint --types=duplicates --keep-all-tagged /path/to/dupes /other/path/to/dupes // main/folder/tree
답변2
진행 속도를 늦추고 좀 더 주의를 기울이는 것이 어떨까요?
그것으로부터 중복된 내용을 비교하여 fdupes
파일에 넣으십시오.
fdupes -r /path/to/start > filesToDelete
그런 다음 자신의 속도에 맞춰 유지하려는 디렉터리나 파일을 삭제할 수 있습니다.filesToDelete
전체 디렉토리 삭제
sed -i '|/directoryToKeep/|d' filesToDelete
즐겨 사용하는 텍스트 편집기에서 작업을 완료 filesToDelete
하고 만들고 싶은 각 파일의 복사본 시작 부분에 표시(아마도 x?)를 추가하세요.유지하다이렇게 하면 수행한 작업을 추적한 다음 발생한 변경 사항을 식별할 수 있습니다.
cat aFile | xargs -d "\n" rm
rm
x가 있는 모든 줄(및 x에 의해 생성된 모든 주석 또는 기타 줄)에 오류가 발생 fdupes
하지만 이러한 파일에서는 아무 작업도 수행되지 않습니다. 그러나 .txt 파일에서 태그가 지정되지 않은 유효한 파일 이름 항목을 모두 제거합니다 filesToDelete
.
답변3
다음은 주어진 첫 번째 디렉토리의 우선순위를 지정하는 짧은 스크립트입니다. 파일을 직접 삭제하지 않고 삭제할 목록만 인쇄합니다. 다음 규칙을 따릅니다.
- 파일 인쇄 안 함
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
파일에 저장하고 파일을 실행 가능하게 만든 다음 실행하여 사용해 보세요.