find + xargs 을 응용한 유용한 명령어들


터미널을 이용해서 커다란 소스를 열어놓고 작업을 하다보면 여러가지 일들이 생깁니다.
파일이 어디에 있는지 어떤 파일들을 내가 작업했었는지 자꾸만 잊어먺 되죠.
왜냐하면 인간은 망각의 동물이니까요!!!
거기다가 명령어 역시 자꾸 잊어 먹으니 팁이란 파일 하나 만들어 놓고 써놓고 필요할때 씁니다.


제가 주로 다루는 소스는 파일이 상당히 크고 파일이 많습니다.
그래서 cscope + ctags 를 사용합니다.

그상태에서는 심볼을 알고 있을때 vi 로 파일을 열때는 -t 옵션을 씁니다.

root@boggle70-desktop:linux# vi -t start_kernel

와 같이 사용하면 start_kernel 이란 함수가 태그 되어 있는 함수를 바로 열어줍니다.
컴파일 하다 에러나면 바로 그 위치의 함수를 열어 버리고 작업이 가능합니다.

아!!!
그러러면 먼저 ctags 를 생성해야 합니다.
기본옵션으로 ctags 의 생성은 

find . -name '*.[chsCHS]' -print > cscope.files
cscope -b -i cscope.files 
ctags -R .

을 사용합니다
파일 리스트를 만들고 cscope  와 ctags 파일을 만들어줍니다.
이제 vi 시작시에 -t 옵션으로 함수명으로 파일을 열수 있고
vi 상에서 cs 명령으로 검색도 할수 있습니다.


이제 본격적으로 find 명령팁을 볼까요?

당연히 find 는 파일을 찾을때 씁니다.
조건을 주면 원하는 결과를 더잘 찾을수 있겠죠?

대부분 하는 조건이 
파일 이름 검색
파일 크기 검색
오늘 변경한 파일 검색

요거 세가지가 제가 가장 많이 쓰는 검색입니다.
첫번째 것은 다 아시죠?

root@boggle70-desktop:linux# find . -name xxx.xxx

넵.. 쉽습니다.


이번엔 파일 사이즈가 틀정 크기 이상인 파일을 찾습니다.

find . -size +xxxc

여기서 xxx 가 크기이고 c 는 단위가 1byte 입니다.
만약 안붙이면 기본단위가 512byte 가 됩니다.
물론 k (1024) 단위도 가능합니다


세번째로 오늘 건드린 파일을 찾고 싶습니다.
왜?  삽질하다가 뭔가 잘못 건드린거 같거든요.

그래서...
일단 수정은 안했어도 오늘 열어봤던 파일을 찾습니다.
root@boggle70-desktop:linux#  find . -atime 0


24 동안 access 한 파일을 찾습니다. 숫자는 24 시간 단위로 커집니다.
지난 2일 동안 access 한 파일을 찾고 싶다면 
root@boggle70-desktop:linux#  find . -atime -2    


동일하게 지난 24시간동안 수정한 파일을 찾고 싶다면 
root@boggle70-desktop:linux#  find . -mtime -1 
하면 됩니다.


마지막으로 find 와 xargs 를 이용한 씰데없는 파일 지우기 입니다.
svn 이나 cvs 등으로 받은 파일을 외부로 보낼때 잡다한 것들은 찾아서 지우고 보내고 싶습니다.
root@boggle70-desktop:linux# find . -name .svn | xargs rm -rf 
하면 .svn 디렉토리는 싹다 찾아서 삭제해 줍니다

뭐 쓰시다 보면 다양한 옵션을 찾아서 쓰실수도 있지만
시작은 그냥 따라하기 부터가 가장 좋습니다.


정리!!!

ctag + cscope 사용예제
find . -name '*.[chsCHS]' -print > cscope.files
cscope -b -i cscope.files 
ctags -R .


vi + -t 옵션으로 바로 열기
vi -t start_kernel


find  사용예
find . -name xxx.xxx : 이름찾기
find . -size +xxxc : 크기 찾기
find . -atime 0 : 열어본 파일 찾기
find . -mtime -1 : 수정한 파일 찾기
find . -name .svn | xargs rm -rf : 원하는 파일만 지우기



이번주도 즐거운 터미널 생활되세요