[질문] find 결과 값(파일들) 이름 한번에 바꾸기

skydeux의 이미지

안녕하세요..
아무리 구글링 해봐도 답이 나오지 않아 답답한 마음에
질문 올립니다..

리눅스 보안 취약점 중,
"불필요한 숨김 파일 또는 디렉토리 존재" 라는 항목이 있는데요.

#find / -type f -name ".*"
#find / -type d -name ".*"

검색 시 무수히 많이 나옵니다.
따라서 홈 디렉토리의 .bash_profile 이나, 환경변수 파일들은 제외하고,
출력된 파일들을 숨김 처리 (.) 를 제거하여 이름변경 하려고 합니다.
이걸 하나하나 하자니 답이없고..
구글링 해보니 find 명령어에 -exec 옵션으로 rm 은 가능한 것 같은데,
mv 나 rename 으로는 안되는 것 같고...

혹시 좋은 방안 있으시면 도움 부탁 드립니다.
감사합니다.

김정균의 이미지

-exec 옵션으로 mv, rename 다 가능 합니다. 또는 find 결과를 pipe 로 넘겨서 xargs 로 처리하셔도 되고요.

https://unix.stackexchange.com/questions/154818/how-to-integrate-mv-command-after-find-command

참고하세요.

skydeux의 이미지

답변 감사합니다.
조금 더 확인해보니
위 find 로 나오는 파일들은 주로
/proc, /sys 내 파일들인데
이름을 바꿔도. 삭제를 해도 재기동시 다시 원상태로 물고 올라오더군요. 해당항목은 예외처리 하였어요.
감사합니다~

김정균의 이미지

/proc 와 /sys 는 kernel 이 관리하는 가상 파일 시스템 입니다.
이 파일 시스템 상의 파일들은 건드리지 않아야 합니다.

익명 사용자의 이미지

앞 답글의 링크에 나와있듯이,

find / -type f -name ".*"  | xargs -I {} mv {} unhidden{}

로 하면 원하는 목적은 달성할 수 있겠습니다만, 매우 위험한 작업입니다..
(이상한 파일이름 문제는 제쳐놓더라도..)

해당 머신이 어떤 목적으로 운영되고 있는지 모르겠으나,
그냥 무작정 저렇게 하고나면 제대로 동작안하게 될 가능성이 매우 높습니다.

"불필요한 숨김 파일 또는 디렉토리 존재"라고 지적된 파일/디렉토리만 추출해서 리스트를 만들고,
직접 검토해서 정말로 불필요한 것들만 골라서 다시 리스트를 만들어서, 그것들만 지우는게 좋습니다.

일단 리스트만 만들어지면 이름을 바꾸는 건 같은 방법으로 하면 됩니다.

cat list.txt  | xargs -I {} mv {} unhidden{}
익명 사용자의 이미지

"sudo" 정도는 붙여줘야...