태그 보관물: file-management

file-management

중복 된 파일은 같은 폴더에있는 경우에만 제거하십시오. 것도 내가 찾고있는 특정 기능을 가지고

나는 FAQ를 읽었으며 이것이 제품 권장 사항을 묻는 질문과 같이 닫히는 것에 가깝다는 것을 알고있다.

필자는 적어도 40 개의 “중복 파일”제거 유틸리티 (Windows, OSX 및 Linux)를 살펴 보았으며 그 중 어느 것도 내가 찾고있는 특정 기능을 가지고 있지 않습니다.

나는 지금이 일을 할 수있는 것이 있거나 내 도구를 써야 할 필요가있는 것이 있으면 필요합니다.

그냥 “예, 존재합니다”대답은 나와 함께 괜찮을 것입니다.
그것은 단지 내가 충분히 열심히 검색하지 않았 음을 의미합니다.

필자가 요구하는 기능 : 대형 폴더 구조에서 중복 파일을 제거 할 수 있지만, 중복 파일이 SAME 폴더에있는 경우에만 제거하십시오.
예 : 동일한 파일 A, B 및 C가 있다고 가정 해보십시오. A와 C는 같은 폴더에 있습니다. B가 다른 폴더에 있습니다. A 또는 C 중 하나를 제거 (선호하지 않음)해야하지만 B는 그대로 두어야합니다.

이 일을 할 수있는 뭔가가 있습니까?
(Windows가 좋지만 OS-X 또는 Linux도 좋습니다.)



답변

당신이 사용할 수있는 fdupes 없이 -r 그래서 하위 디렉토리로 내려 가지 않습니다. 이렇게하면 중복 파일 목록이 인쇄됩니다.

find . -type d -exec fdupes -n {} \;

-n 빈 파일을 무시합니다. 더하다 -dN ( --delete --noprompt )를 사용하여 첫 번째 중복 파일을 제외한 모든 파일을 삭제합니다.

설치할 수 있습니다. fdupes OS X에서 brew install fdupes.


답변

글쎄, 내가했던 것처럼 파이썬 스크립트를 작성했다.

나는 그것을에 접대했다 Google 코드 GPL v3으로 공개 소스를 만들었으므로 프로그램을 개선하고 싶은 사람은 누구나 할 수 있다고 가정합니다.

또한 다소 디버깅했습니다 (Windows에서 수십 개의 파일을 만들고 원본을 모두 삭제했습니다). 이 코드는 코드가 실제로하는 일을 누구에게 알리는 것과 같이 매우 높게 평가됩니다.

파이썬 3.3에서 실행했지만 파이썬 2에서 작동해야한다고 가정합니다.

아, 그리고 가장 중요한 부분은, 그것은 모든 OS Python (Windows, OSX, Linux, …)에서 지원되어야합니다.


답변

OSX 및 Linux 모두에서 실행해야하는 느리지 만 확실하고 간단한 방법입니다. 나는 당신이 당신의 파일에 중복 된 파일에 관심이 있다고 가정하고있다. $HOME 그러나 당신은 당신의 필요에 맞게 그것을 바꿀 수 있습니다.

처음에는 모든 디렉토리의 목록을 찾은 다음 그 안의 파일을 비교하고 동일한 디렉토리를 삭제합니다. 앞에서 말했듯이 이것은 매우 단순하기 때문에 모든 파일 쌍 중 첫 번째 파일을 유지하고 경고없이 나머지 파일을 삭제합니다.

이것은 속임수를 출력하지만 어떤 변경도하지 않을 것이다. 당신의 파일에 :

find $HOME  -mindepth 1 -type d | while read dir; do
  find $dir -type -f -exec md5sum {} \; | sort > md5sums;
  gawk '{print $1}' md5sums | sort | uniq -d > dupes;
  while read d; do
    echo "---"; grep -w $d md5sums | cut -d ' ' -f 2-;
  done < dupes
done; rm dupes md5sum

이것은 자동으로 중복 파일을 삭제하고, 그것이 확실하다면 실행하십시오. :

find $HOME  -mindepth 1 -type d |
while read dir; do
  find $dir -type -f -exec md5sum {} \; | sort > md5sums;
  gawk '{print $1}' md5sums | sort | uniq -d |
  while read d; do grep -w $d md5sums | cut -d ' ' -f 2- | tail -n +2; done |
  | xargs rm ;
done; rm dupes md5sum

주의 사항 : 이것은 느리고 실제로는 느리며 경고를주지 않으며 파일을 자동으로 삭제합니다. 밝은면에서는 파일이 원하는 디렉토리와 동일한 디렉토리에있는 경우에만 그렇게합니다.


답변