먼저 디렉토리에있는 모든 파일의 목록이 있다고 가정합니다. 일반 텍스트 파일 일 수 있습니다. 의 그것 list
다음이 한 줄이 일을 할 것 부르 자 :
sort list|awk '{if(p&&$0~p"e+$")print "rm "$0;p=$0}'
이 줄 위의 rm foo
명령, foo
는 중복 파일입니다 인쇄됩니다. 다음의 예제를 보자 :
이
kent$ cat list
index.html
logo.png
logo.pnge
package.zip
index.htmle
index.htmlee
package.zipe
file.exe
file.exee
file.exeee
kent$ sort list|awk '{if(p&&$0~p"e+$")print "rm "$0;p=$0}'
rm file.exee
rm file.exeee
rm index.htmle
rm index.htmlee
rm logo.pnge
rm package.zipe
당신이 볼 수있는 모든 중복 된 파일은 rm command
생성에 있습니다.
: 파일 이름에 공백 및 기타 특수 문자를 가질 수 있기 때문에, 그것은 좋은 방법이 따옴표와 파일 이름을 래핑하는 것입니다
sort list|awk '{if(p&&$0~p"e+$")print "rm "$0;p=$0}'|sh
편집 : 당신은 너무 |sh
에 단지 파이프 라인을 실행하려면
sort list|awk '{if(p&&$0~p"e+$")print "rm \""$0"\"";p=$0}'
은 예를 들어. (exe, png, zip, txt ....) 아니면 아무것도 될 수 있습니까? – Kent
불행히도 그것은 무엇이든 될 수 있습니다. – hsz
네가 무엇이든 될 수 있다면'ee.e'를 어떻게 말할 수 있고'ee.ee'와'ee.eee'는'ee.e'의 세 가지 다른 파일 또는 모든 dup입니까? 또는'ee.e'와'ee.ee'는 다른 파일이고'ee.eee'는'ee.ee'의 dups입니까? – Kent