find 명령어를 이용하여 파일이름에 특수문자가 있으면, 찾아주는 방법이다.

find . -name '*[+{;"\=?~()<>&*|$ ]*' -print

위의 명령어를 실행하면, [] 사이에 있는 문자를 포함하는 파일들을 찾아준다.
간단하게 공백만 들어가있는 파일이름은 아래 옵션으로 실행하면 된다.

find . -name "* *" -print

예전에 리눅스 서버에 해킹을 당한적이 있다.
어느 순간 ls -al 로 디렉토리를 보는중 이상한 파일이름이 있음을 알아차렸다.
"\" 로 시작하는 파일이름이었는데, 무심코 보면 숨김파일 같다.
특수문자를 포함하는 파일을 찾았으면, 간단하게 삭제까지 할 수 있다.
"|" 파이프로 출력을 리다이렉션 한 후 xargs 를 이용하여 "xargs rm -f {}" 하면 된다.

find . -name '*[+{;"\=?~()<>&*|$ ]*' -print | xargs rm -f {}

만약에 정말 숨김파일을 찾고자 한다면, "." 으로 시작하는 파일을 찾으면 된다.

find . -name ".*" -print
Posted by dcmru
,