![현재 디렉터리에서 중복 파일을 삭제하는 명령](https://linux55.com/image/132459/%ED%98%84%EC%9E%AC%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%EC%A4%91%EB%B3%B5%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20%EB%AA%85%EB%A0%B9.png)
프로그램에 의해 생성된 여러 개의 중복 파일이 포함된 디렉터리가 있습니다. 중복 항목은 이름이 동일하지만(번호 제외), 이름이 같은 파일이 모두 중복되는 것은 아닙니다.
중복을 제거하는 간단한 명령은 무엇입니까(이상적으로는 GNU coreutils에서 한 줄로 제한됨)스크립트에 대한 질문)?
파일 이름 예:
parra1998.pdf parra1998(1).pdf parra1998(2).pdf
답변1
빠르고 더러운 해결책은 파일을 해시한 다음 여러 번 나타나는 해시를 검색하고 파일 이름 번호에 대한 해시를 제거하는 것입니다.
예를 들어:
sha1sum * > files.sha1sum cat files.sha1sum | cut -f1 -d" " | sort | uniq -c | grep -v " 1 " | sed --regexp-extended 's/^[^0-9]+[0-9] //g' | xargs -n1 -I§ grep § files.sha1sum | sed --regexp-extended 's/^[^ ]+ +//g' | grep -v '(' | xargs -n1 -I§ rm "§"