| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 기술사
- 태터수정
- IPTV
- conemu
- 작성중
- LDAP
- eclipse35
- Qmail
- 우분투
- 알고리즘
- 공매도
- Linux
- Android
- ubuntu
- KOSPI
- Audacity
- uml example
- 주식
- Algorithm
- 보안
- 안드로이드
- UX
- 코스피
- adb
- 도서
- java
- Eclipse
- IT 키워드
- unix
- Today
- Total
Do diffence
[Linux] 유용한 find 명령 본문
find 명령 요약
주어진 이름으로 찾아 화면에 출력한다. -name 은 대소문자 구분한 이름을 준다.
find ./ -name '*.xml' -print주어지는 이름의 패턴은 *? 를 사용할 수 있다.
찾은 결과를 받아 명령의 입력으로 실행할 수 있다. 다음은 현재 디렉토리 밑에서 .c 파일을 찾아 md5sum 으로 해시 값을 출력한다. -iname은 대소문자 구분을 하지 않는다.
find -iname "*.c" -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e ./mycprogram.c검색시 탐색 깊이는 -maxdepth 혹은 -mindepth를 사용할 수 있다.
find -maxdepth 2 -iname "*.c" -exec md5sum {} \;어떤 파일을 제외한 것만 찾을 수 있다:
find -maxdepth 1 -not -iname "mycprogram.c"파일의 퍼미션으로 찾을 수 있다.
find . -perm -g=r -type f -exec ls -l {} \;
find . -perm g=r -type f -exec ls -l {} \;
find . -perm 040 -type f -exec ls -l {} \;find 명령으로 i-node를 통해서 지우기
아래 처럼 특수문자로 "~" or "a b c" 등의 이상한 파일이 있을 경우 inode를 확인해 삭제에 유용하다.
$ ls -i
$ 32471 a b c
$ find . -inum 32471 -exec rm -rf {} ';'
$ find . -inum 32471 -exec rm -rf {} \;파일 형식으로 검색
옵션 -type 은 파일 형식으로 찾을 수 있다. 파일 형식은:
b block special
c character special
d directory
f regular file
l symbolic link
p FIFO
s socket
일반 파일
find . -type f소켓 형식의 파일
find . -type s디렉토리 형식
find . -type d숨겨진 파일만 검색도 가능하다.
find . -type f -name ".*"역시 숨겨진 디렉토리만 찾을 수 도 있다.
find -type d -name ".*"파일 크기로 검색
옵션 -size 를 사용해서 파일의 크기로 찾을 수 있다.
아래는 어떤 크기 보다 크거나, 작은 파일을 찾아 준다.
find -size +100M # 보다 큰 파일
find -size -100M # 보다 작은 파일
find -size 100M # 같은 크기의 파일다음 같이 응용해 볼 수 있다. 100MB 보다 큰 파일을 찾아 삭제한다:
find / -type f -name *.zip -size +100M -exec rm -i {} \;파일의 수정된 시간을 기준
모든 파일의 수정된 시간 정보를 알 수 있다. test_1.txt의 시간을 기준으로 검색해 보자.
ls -lrt test_1.txt
-rw-r--r-- 1 gtko gtko 0 2011-02-01 02:26 test_1.txt옵션 -newer 에 대상 파일을 주면 해당 파일을 생성한 날짜 이후의 결과만을 표시하게 된다.
find -newer test_1.txt
.
./dir2
./dir2/file2
./dir2/file3자주 사용할 만한 find 명령
유용한 find 명령들 alias로 만들어 사용하기도 한다.
a.out 인 파일 지우기
alias rmao="find . -iname a.out -exec rm {} \;"c프로그램의 core 파일
alias rmc="find . -iname core -exec rm {} \;"큰 파일 삭제...
alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"iconv 와 결합
iconv로 파일 인코딩을 변환할 수 있는데, 많은 파일을 한번에 처리하기 위해서 find와 결합해 찾은 모든 파일의 파일 인코딩을 변환할 수 있다.
다음은 .c 파일을 찾아 인코딩을 euc-kr에서 utf-8로 변환하는 명령이다.
find ./ -name '*.c' -exec iconv -feuc-kr -tutf-8 {} -o {} \;find 를 사용하지 않는다면, 디렉토리 안에 있는 모든 파일의 인코딩을 변환하고자 할 때는 shell 조건문과 섞어서 사용할 수 있다.
$ for F in './*.sql'; do iconv -c -feuc-kr -tutf-8 $F -o $F; done