메뉴 건너뛰기

XEDITION

UNIX

[UNIX/AIX] find 명령어

김병수 2019.11.22 09:50 조회 수 : 13

0. /test 폴더 안에 특정 bmp 파일을 찾아서 10일 이후 파일들 삭제

 

find /test -name "*.bmp" -mtime +10 -exec rm -rf {} \;

 

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

 

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

 

2. 파일 크기

 

# 파일 크기가 300KB 이상( -size +300k )인 파일만

# (호스팅되는 홈피내에 큰 사이트의 파일이 있는지 찾을 때 유용)

find . -size +300k -ls

 

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

find . -size -500c -ls

 

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

 

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 과 같이 사용하는 것은 옳지 않다.

 

 

 

 

 

 

 

-------------------------------------------------------------------------------------------------------------------

 

출처 : http://dumaclub.tistory.com/entry/UNIX-find-%EB%AA%85%EB%A0%81%EC%96%B4

 

 

 

 

 

1. 기능

 

다양한 옵션을 통해 찾고자 하는 파일의 조건을 설정할 뒤 그 조건에 맞는 파일을 검색할 수 있다.

 

 

 

2. 사용법

 

find [찾을 디렉토리 경로]  [찾기옵션]

 

 

 

3. 찾을 디렉토리 경로

 

/   :  루트에서부터 검색을 한다. 즉 전체를 검색한다.

.   :  현재 디렉토리를 포함하여 하위 디렉토리까지 검색한다.

/디렉토리   :  지정된 디렉토리에 검색

 

 

 

4. 옵션

 

-name [파일이름]   :  파일이름과 일치

  파일명 또는 확장자를 기준으로 검색할 수 있다.

 

-perm [권한]  :  권한과  : 일치하는 파일

  ex) find / -user level2 -perm -4000

       4000의 의미는 -(최소한), 4(SetUID)가 걸려있는 000(모든파일)을 의미한다.

 

-user [유저]  :  유저와 일치

 

-group [그룹] :  그룹과 일치하는 파일

 

-empty : 비어있는 파일이나 디렉토리를 검색

  ex)find . -empty

       현재 디렉토리 이하에서 비어있는 파일과 디렉토리를 검색.

 

-size [+파일크기/-파일크기/파일크기][bckw중 택1] : 파일크기와 일치하는 파일

 

 

  b : 블록단위 512kb

  c : byte

  k : kbyte

  w : 2byte 워드

  아무런 단위를 붙이지 않은 경우 : 디폴트 값 b

 

  파일크기에 +1024k 이렇게 +를 붙이는 경우에는 크기가 1024kbyte 이상인 것을 찾고, -는 그 이하, +,-를 붙이지 않는 경우에는 그 크기의 파일을 찾는다.

 

  ex)find / -size 1024k

       시스템 전체에서 파일크기가 1024kbyte인 파일을 검색한다.

 

-type [파일타입] : 파일의 타입을 지정하여 검색한다.

 

  b : 블록 특수 파일(block device)

  c : 캐릭터 특수 파일 (character deice)

  d : 디렉토리(directory)

  f : 일반파일(file)

  l : 심볼릭 링크(link)

  p : 파이프 (pipe)

  s : 소켓 (socket)

 

-print : 찾은 파일들을 표준출력(stdout)으로 출력한다. 기본으로 설정되어 있다.

 

-nouser : 소유자가 없는 파일을 검색(/etc/passwd 파일에 없는 사용자의 소유자로 되어 있는 파일을 검색)

 

-nogroup : /etc/groups파일에 없는 그룹의 소유인 파일을 검색한다.

 

-fprint [임의파일명] : 검색된 파일을 `임의파일명'으로 출력한다.(`임의파일명'이 존재 하지 않을 경우에는 새로 생성되고, 존재할 경우에는 기존의 파일은 없어짐)

 

-exec command {} \; : 파일이 검색되었을 경우, 검색된 파일들에 대해 특정 명령을 수행 할 때 사용한다.

 

  {} : 검색된 파일들을 의미한다. 여러개의 파일이 검색되면 하나씩 치환되면서 해당명령이 실행되는 것이다. 

  ; : 검색된 결과가 여러개인 경우 하나의 행에 여러 명령을 사용하기 위함이다.

  \ : ;이 특수 문자이기 때문에 문자로 ;라는 것을 알려 주기 위함이다.

 

  ex) find . -name kkk* -exec rm {} \;  //kkk로 시작하는 파일을 검색하여 삭제(rm)함.

 

-ok : -exec와 동일한 작업을 한다. 다른 점은, 명령을 실행할 때마다 실행 의사를 물어본다.

 

-newer file1 file2

`file1' 보다는 이후에 `file2' 보다는 이전에 생성되거나 변형된 파일들을 찾을 경우에 사용한다.

 

-cnewer 파일명 : '파일명' 부분에 적어준 파일보다 더 최근에 수정된 파일들을 찾아준다.

 

-atime +n/-n/n : 최근 n일 이전에 액세스된 파일을 찾아준다.(accessed time)

   +n : n일 또는 n일 이전에 액세스된 파일

   -n : 오늘 부터 n일 전 사이에 액세스 된 파일

    n : 정확히 n일 전에 액세스된 파일

 

-ctime +n/-n/n : ctime은 파일의 퍼미션을 마지막으로 변경시킨 날짜를 의미한다. (changed time)

   +n : n일 또는 n일 이전에 퍼미션이 변경된 파일

   -n : 오늘 부터 n일 전 사이에 퍼미션이 변경된 파일

    n :  정확히 n일 전에 퍼미션이 변경된 파일

 

-mtime +n/-n/n : mtime은 파일내의 data를 마지막으로 변경한 날짜를 의미한다.(modified time)

    +n : n일 또는 n일 이전에 수정된 파일

    -n : 오늘 부터 n일 전 사이에 수정된 파일

      n : 정확히 n일 전에 수정된 파일

 

-mount 현재의 파일 시스템과 동일한 타입의 파일 시스템에서만 검색을 할 경우에 사용한다.

 

-maxdepth n : 0이 아닌 정수값으로 경로 깊이를 지정하여 검색을 할 경우에 사용한다. 예를들어, '-maxdepth 1'은 시작위치로 지정한 디렉토리만 검색하고 하위 디렉토리는 찾지 않는다.

 

-mindepth n : 0이 아닌 정수값으로 지정된 숫자만큼의 깊이에서부터 그 하위 디렉토리를 검색한다. (GNU find 버전)

 

-follow : 심볼릭 링크된 디렉토리도 검색을 할 경우에 사용한다.

 

-regex : 정규표현식(regular expression)을 이용하여 파일들을 찾을 경우에 사용한다. `-iregex'는 대소문자를 구별하지 않을 경우에 사용한다. (GNU find 버전)

action은 test에서의 조건과 일치하는 파일들에 대해 수행할 작업을 명시하는 것으로 다음과 같은 방법들이 있다.

 

-ls : `ls -dils' 형식으로 찾은 파일들의 정보를 출력할때 사용한다.

 

-fls [임의파일명] : `ls'와 동일하게 동작하며 결과를 [임의파일명]로 출력한다.

 

 

 

출처: https://jangpd007.tistory.com/83 [참 놀라운 세상]

번호 제목 글쓴이 날짜 조회 수
» [UNIX/AIX] find 명령어 김병수 2019.11.22 13
43 [UNIX/AIX] Download Java version on AIX file 김병수 2019.11.11 11
42 [UNIX/AIX] rsync install and config on AIX7.1 file 김병수 2019.11.07 17
41 [UNIX/AIX] filesystem의 jfs2log 파일 변경 김병수 2019.11.06 24
40 [UNIX/AIX] 0516-1972 varyonvg : The volume group is varied on in other node in concurrent mode; non-concurrent mode 김병수 2019.11.06 18
39 [UNIX/AIX] 0506-365 Cannot mount guarded filesystem 김병수 2019.11.06 69
38 [UNIX/AIX] UNITY 400 스토리지, AIX 7.1, EMC ODM 설치 김병수 2019.11.05 16
37 [UNIX/AIX] AIX 7.1에 naver 나눔고딕 설치 file 김병수 2019.10.08 27
36 [UNIX/AIX] 스토리지 마이그레이션 방안 김병수 2019.10.07 27
35 [UNIX/AIX] error 내용 중 Detail Data SIGNAL NUMBER 6 의미 김병수 2019.10.03 1363
34 [UNIX/HP-UX] 간단한 명령어 김병수 2019.10.03 20
33 [UNIX/Solaris] 간단한 명령어 김병수 2019.10.03 22
32 [UNIX / HP-UX] HP-UX vPar Architecture and compared introduce 김병수 2019.10.03 21
31 [UNIX / HP-UX] vPars v6 CLI 김병수 2019.10.03 31
30 [OS / HP-UX] i2 Blade Memory organization 김병수 2019.10.03 29
29 [OS / HP-UX] sar 명령어 김병수 2019.10.03 25
28 [UNIX/HP-UX] swap 확인하기 김병수 2019.10.03 21
27 [OS / AIX] AIX Performance Tools file 김병수 2019.10.03 28
26 [OS / AIX] 시스템 성능분석, CPU부분 file 김병수 2019.10.03 23
25 [OS / HP-UX] hp-ux system and network administration i h3064a 김병수 2019.10.03 22
위로