yunsh206

회원가입로그인

컴퓨터 Unix에서 파일 찾기 (find)

2008.02.05 09:57

RanomA 조회 수:6681

http://kldp.org/node/19069

 

 

[팁]find 명령어의 유용한 옵션

다들 많이 쓰고 많이 아는 명령어 입니다.

주로 쓰는 옵션으로는

-name : 이름으로 찾을 때

-iname: name은 정확한 대소문자 구성을 알아야 되지만 iname은 대소문자 구분을 하지 않습니다.


-perm : 권한으로 찾을때
find . -perm 700 -print (권한이 700인 파일)


find . \ ( -perm 400 -o -perm 200 ) -print
파일 권한이 400인 파일과 200인 파일을 찾아준다.
(주의 : "\"의 앞뒤에 space 가 반드시 있어야 한다.)

-user , -group : 소유주나 그룹으로 찾을때
find . -user unix01 -print (파일 소유자가 unix01인 파일을 찾아준다. )

-empty : file의 크기가 0인 것을 찾기

-size : file의 크기 (block 수)로 찾기
find . -size +1024 -print (파일의 블럭 크기가 1024 이상인 파일을 찾아준다.)

-type c : 확장자가 c인 파일 찾기

-mount : 현재 파티션에서만 파일을 찾습니다. mount된 파티션에서는 검색하지 않죠. 전 데이타용 파티션을

크게 잡아서 따로 마운트해서 쓰고 있는데 보통 여기를 뒤질 필요는 없기 때문에 -mount 옵션으로 현재

파티션에서만 검색하곤 합니다.

-regex : 정규식도 사용할 수 있습니다. POSIX 정규식이겠죠?

-iregex: 대소문자 비구분 정규식으로 파일 찾기

-exec : 명령어 실행

find ./ -name \*.[cSh] -exec grep -H "찾고자하는문자열" {} \;

찾고자하는 문자열을 현제 디렉토리 부터 서브디렉토리까지 확장자가 c, S, h 인 파일에서 찾는 것입니다.

[cSh]가 정규식의 문자 클래스와 같은 역할을 하는 거죠. 소스화일로부터 원하는 문자열 찾을 때 유용합니다.

활용해 보세요. 끝에 리다이렉션( > 기호로 출력방향 전환) 붙여서 파일로 저장해도 좋고요.

만약 파일 이름은 한번만 나오게 하고 싶으면

find . -type f -name \*.[chS] -exec grep "찾을문자열" {} \; -print

하면 됩니다.

또, *.[chS]에서 *를 escape하지 않고(\* 하지 않고 그냥 *만 한다면), 현재 디렉토리에 c 파일들이

있으면, 셸에서 파일 이름 확장이 되버려서 원하는 결과를 얻을 수 없게 되죠.

시스템이 옮겨지면서 방대한 양의 파일들의 날짜가 모두 미래라서 컴파일이 안될 때가 있었습니다.

이걸 손수 다 읽었다 썼다를 하는데 힘이 들더군요. touch 명령 실행하기.

touch로 살짝 건드려 주기만 해도 날짜가 바뀐다는 것을 알아냈습니다.

다음에 find 의 -exec 옵션을 이용해서 모두 어루만져 주었습니다.

find ./ -exec touch {} \; -print


그 외의 옵션들

-amin N : N 분 이전 부터 access했던 file찾기

-atime N : N 시간 이전부터 access했던 file찾기
find . -atime +30 -print (30일 이전에 억세스되었던 파일을 찾는다.)

-ctime N : N 시간 이전에 상태가 변경된 파일 찾기

-mtime N : N 시간 이전에 내용이 변경된 파일 찾기
find . -mtime -7 -print (7일 이내에 수정된 적이 있는 파일을 찾는다.)
위에 있는 시간관련 옵션들은 보안상 위험한 백도어 같은 파일을 찾을때 유용하게 쓸 수

있습니다. 관리자가 자리를 비우거나 휴가를 간 사이에 접근해서 내용이나 상태를 변경시킨

게 있다면 누군가 침입을 해서 건드린 것 일 확률이 높으니 이것들을 찾는 용도로 많이

쓰입니다.

유닉스 시스템에서 어떤 큰 화일이 시스템을 소비하는지 알고 싶을 때, 즉

파일 크기 순서대로 Sorting하는 것.

find /var -mount -ls -xdev | /usr/bin/sort -nr +6 | more

매주 일요일 새벽 2시에 access한 날짜가 2일 이상인 파일을 /tmp 에서 지우려면

0 2 * * 0 find /tmp -atime +2 -exec rm {} ;


find 명령 외에 파일 검색에 쓰이는 명령어로는

whereis : 명령어, 원본소스,메뉴얼 파일을 찾을때

which : shell과 명령어의 위치를 찾을때 (PATH가 걸려 있는 범위내 에서만)


번호 제목 글쓴이 날짜 조회 수 추천 수
183 리눅스 SSH Network error: Software caused connection abort RanomA 2021.05.29 2018 0
182 인터넷 기본 설정 복원 창 띄우는 방법들 file RanomA 2021.05.01 1025 0
181 리눅스 디렉토리별 압축 파일 생성 쉘 스크립트 RanomA 2021.04.04 831 0
180 Javascript 숫자에 끊어 읽기 컴마(,) 추가 RanomA 2020.11.27 752 0
179 Javascript 문자열을 포맷 맞춰 날짜로, 날짜를 포맷 맞춘 문자열로 변환 RanomA 2020.11.26 719 0
178 Javascript 날짜 더하기 RanomA 2020.11.26 451 0
177 Javascript 해당 연월의 마지막 날짜 가져오기 RanomA 2020.11.25 365 0
176 Javascript isNullOrEmpty RanomA 2020.11.25 686 0
175 Javascript 전화번호 포매팅 RanomA 2020.11.25 2309 0
174 Javascript IN RanomA 2020.11.18 261 0
173 Javascript LPAD RanomA 2020.11.17 582 0
172 Adobe Creative Cloud 업데이트 실패 184(혹은 C184) 오류 file RanomA 2020.09.08 1073 0
171 오라클 테이블 레이아웃 조회 Query RanomA 2020.01.13 2064 0
170 SQL Developer의 폰트 설정에서 폰트 목록이 안나타날 때 [6] file RanomA 2019.12.30 4877 0
169 Underscore( _ 문자)를 카멜 케이스(Camel Case)로 변환하기 RanomA 2019.12.06 1815 0
168 라이트룸(Adobe Lightroom) 한자/일본어용 폰트 변경 file RanomA 2018.06.06 2145 0
167 입력기(IME)에 EN - 영어(미국) 키보드 US 가 표시될 때 [1] file RanomA 2016.05.03 1456 0
166 Thunderbolt 3와 USB-C RanomA 2016.04.28 682 0
165 ATOK 단축키 설정을 했는데도 입력 모드 변경이 잘 안될 때 file RanomA 2016.04.21 503 0
164 ATOK 단축키 설정 file RanomA 2016.04.18 563 0