캠핑과 개발

원하는 파일을 디렉토리를 탐색하면서 지정된 조건에 만족하는 파일을 찾는다. 이름이나, 크기, 날짜, 사용자등의 조건을 지정하여 찾을 수 있다.






0. 파일 검색

#최상위 루트 디렉토리부터 검색하여 검색된 파일을 한 행에 하나씩 표준 출력

find / -name thkim -print


#현재의 작업 디렉토리에서 검색

find . -name thkim -print


#모든 위치에서 파일, 디렉토리 찾기

find / -name 파일명

[출처] [LINUX] find 명령어|작성자 b1ix



#모든 위치에서 파일, 디렉토리 찾기(대소문자 구분없이)

find / -iname 파일명


#모든 위치에서 파일 찾기

find / -name 파일명 -type f


#모든 위치에서 디렉토리 찾기
find / -name 디렉토리명 -type d

[출처] [LINUX] find 명령어|작성자 b1ix


[출처] [LINUX] find 명령어|작성자 b1ix


#모든 위치에서 파일, 디렉토리 찾기(해당 파일명 포함)

find / -name *파일명*


1.현재 디렉토리( . ) 이하에 확장자가 .html( -name "*.html" ) 인 파일만 ( -type -f )


[출처] [LINUX] find 명령어|작성자 b1ix

find . -name "*.html" -type f -ls

2. 파일 크기

# 파일 크기가 300KB 이상( -size +300k )인 파일만 
# (호스팅되는 홈피내에 큰 사이트의 파일이 있는지 찾을 때 유용)
find . -size +300k -ls

# 파일 크기가 500bytes 이하( -size -500c )인 파일만  
find . -size -500c -ls 

#현 디렉토리에서 크기가 1000블록 이하인 파일 검색 
find . -size -1000 -print
 


# 최상위 루트에서 크기가 1000블록 이상인 파일 검색 
find / -size +1000 -print 


3. 수정일

# 수정한지 20일 이상( -mtime +20 )된 파일과 디렉토리
find . -mtime +20 -ls 

# 수정한지 20일 이상된 파일만
find . -mtime +20 -type f -ls

# 수정한지 20일 이상된 파일만 삭제 ( -exec rm {} \; ) 
# (정기적으로 20일이 지난 파일을 삭제할 때 유용)
find . -mtime +20 -type f -ls -exec rm {} \;

# 수정한지 3일 이내( -mtime -3 )의 파일만 (백업할 때 유용)
find . -mtime -3 -type f -ls

# 수정한지 30분 이내( -mmin -30 )의 파일만
find . -mmin -30 -type f -ls


#10일 이전에 수정된 파일 검색

find . -mtime +10 -print

#10일 이내에 수정한 파일을 검색하여 모두 지운다
find . -mtime -10 exec rm {} \:

#5일 이내에 생성한 파일을 검색
find / -cmin 5 -print


4. 퍼미션 및 파일 소유

# 파일시스템 전체( / )에서 SUID/SGID가 설정된 모든 파일 목록을 얻음
find / -type f \( -perm -04000 -o -perm -02000 \) -ls

# 소유자가 없는 파일 목록을 얻음 (사용자는 이미 삭제했는데, 파일이 남은 경우)
find / -nouser -o -nogroup

5. 출력 형식 지정

# 출력 형식을 printf로 만들어서 (출력 결과를 다른 프로그램에서 받아서 쓸 때 유용)
# %h = 경로, %f = 파일명, %k = KB, %s = Bytes

# 형식 : <경로/파일명> <파일크기KB>
find . -printf "%h/%f \t %kKB \n"
... 생략 ...
./public_html/phps/icon/type/pcx.gif      4KB
./public_html/phps/icon/type/ra.gif       4KB
./public_html/phps/icon/type/sound.gif    4KB
./public_html/phps/icon/type/text.gif     4KB

# 형식 : <경로/파일명> <파일크기Bytes>
find . -printf "%h/%f \t %sKB \n"
... 생략 ...
./public_html/phps/icon/type/movie.gif    912Bytes
./public_html/phps/icon/type/mp3.gif      958Bytes
./public_html/phps/icon/type/pcx.gif      897Bytes
./public_html/phps/icon/type/ra.gif       903Bytes
./public_html/phps/icon/type/sound.gif    932Bytes

6. 홈페이지 포팅할 때 퍼미션 안 맞는 경우 유용한 것

# 확장자가 .htm* .gif, .js, .css 인 것만 퍼미션을 644(rw-r--r--)로
find . -name "*.htm*" -o -name "*.gif" -o -name "*.js" -o -name "*.css" -exec chmod 644 {} \;

# 파일은 퍼미션을 644로
find . -type f -exec chmod 644 {} \;

# 디렉토리는 퍼미션을 701로
find . -type d -exec chmod 701 {} \;

# 하위의 모든 퍼미션을 바꾸지 않고 depth를 지정하여 제한을 둘 때
# 옵션 : -maxdepth 숫자  (1=현재디렉토리만, 2=현재디렉토리 포함하여 한단계 하위디렉토리까지만)
find . -maxdepth 1 -type d -exec chmod 701 {} \;

※ -maxdepth는 -type나 -perm 등의 조건연산자가 아닌 옵션이다. 
   따라서 조건연산자보다 먼저 사용해야한다. (다른 명령처럼 옵션을 먼저쓰는 것으로 이해하면 됨)
   find . -type -d -maxdepth 1 과 같이 사용하는 것은 옳지 않다.



7. 검색된 파일의 명령주기


#7월1일 ~2일 사이에 생성된 파일을 검색하여 /data/backup으로 복사하라

touch 201107010000 start.txt

touch 201107022359 end.txt

find . -newer start.txt -a ! -newer end.txt -exec cp {} /data/backup/



linux-find.pdf


'개발 > Linux' 카테고리의 다른 글

linux USB mount, unmount  (0) 2012.05.17
linux 명령어 - du  (0) 2012.05.17
디렉터리 구성  (0) 2012.05.17
리눅스 백그라운드 실행  (0) 2012.05.17
rpm 명령어 사용하기  (0) 2012.05.17