IT 기술문서/Redhat Linux

Linux Find 의 모든것

미니도라 2017. 4. 14. 17:14

파일 찾기 및 명령어 검색

 

1. 비어 있는 파일 찾기

# find / -empty -exec ls -l {} \;

 

2. uid,소유자 파일 찾기

# find / -uid 501 -exec ls -l {} \;

# find / -user user1 -exec ls -l {} \;

 

3. 특정 사용자의 홈 디렉토리 내에서 특정 파일 찾기

# find ~ -name "*.txt" -print

 

4. 시스템에서 특정 파일 검색 자동 삭제

# find / -name *.bak -exec rm -f {} \;

 

5. 크기로 검색 찾기

# find / -size +100M -exec ls -l {} \;

 

6. 최근 엑세스되거나 변경된 파일 찾기

- 정확히 5분에 변경된 파일을 검색

# find / -mmin 5

- 10분 보다 더 오래전에 변경된 파일을 검색

# find / -mmin +10

- 5분 이내에 변경된 파일을 검색

# find / -mtime 10 (최근 몇 시간이내에 변경된 파일 검색)

# find / -atime 10 (최근 몇 시간이내에 엑세스 되어진 파일 검색)

- 비교파일 보다 더 최근에 사용된 적이 있는 파일 검색(anewer, newer)

# find /ex1 -newer /ex1/righta -exec ls -l {} \; | sort -k 7

 

7. 파일 타입을 이용한 파일 찾기

- 일반 파일 검색

# find ~ -type f

- 블록장치 파일 검색

# find /dev -type b

- 디렉토리 파일 검색

# find /etc -type d -print

- 심볼릭 링크 파일 검색

# find / -type l -exec ls -l {} \;

 

8. 보안 관련 검색 필터들

- root 소유의 SetUID 찾기

# find / -user root -perm 4755 -exec ls -l {} \;

# find / -user root -a -perm 4755 -exec ls -l {} \;

# find / -user root -and -perm 4755 -exec ls -l {} \;

위 세가지 방법은 동일한 결과를 보여준다.

# find / -user root -o -perm 4755 -exec ls -l {} \;

# find / -user root -or -perm 4755 -exec ls -l {} \;

위의 2가지 연산법은 -user 이거나 -perm이 4755 인 검색 결과를 모두 보여준다.

- 서버 내부의 .rhosts파일 찾아서 확인하기

 1. .rhosts는 외부에서 아무런 제한 없이 로그인 할 수 있는 접근 허용이 설정된 파일 입니다.

     이 파일이 존재한다면 반드시 확인해 봐야 한다.

 2. # find / -name .rhosts -exec

- .bash_history

 1. history 파일은 root를 포함한 각 사용자들의 홈 디렉토리에 존재한다. root history 파일의 용량이 0 이라면

     99% 해킹 당했다고 보면 된다.

 2. # find / -name .bash_history

- 무적파일 찾기(소유자 또는 소유 그룹이 없는)

 # find / -nouser -o -nogroup

 

- 특정 문자가 속한 파일 찾기

# find /home -type f -exec egrep -i "Linux" /dev/null {} \;

# find / -name "*.*" | xargs grep "Linux"

 

- 특정 문자를 찾아서 한번에 변경하기

# find . -name "*.*" -exec perl -pi -e 's/Linux/Unix/g' {} \; -print

 

하드디스크 속도 측정하기

# hdparm -tT /dev/sda

 

 

find ---주어진 파일명과 동일한 파일을 찾고, 그 경로를 출력한다. 

# find / -name newbie -print 

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

# find . -name newbie -print 

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

# find / -size +1000 -print 

최상위 루트에서 크기가 1000블록 이상인 파일 검색 

# find . -size -1000 -print 

현 디렉토리에서 크기가 1000블록 이하인 파일 검색 

# find . -mtime +10 -print 

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

# find . -mtime -10 exec rm {} : 

10일 이내에 수정한 파일을 검색하여 모두 지운다 

# find / -cmin 5 -print 

5분전에 마지막으로 수정된 파일을 찾을 수 있다. 

# find /home -empty -print 

/home 디렉토리에 용량이 0인 파일과 디렉토리를 찾는다. 

# find / -perm -4000 -print 

퍼미션이 4000 이상인 파일을 모두 출력한다. 
출처 : http://www.linuxno1.com/ 
  
find ./ -name "*.jsp" -exec grep "request" {} ; -print 
디렉토리내에(하위디렉토리포함) *.jsp라는 파일안에 request라는 단어가 있는 지 찾아서 뿌려줍니다. 
  
find ./ -name "*.jsp" -exec perl -pi -e "s/search/replace/g" {} ; -print 
디렉토리내에 *.jsp라는 파일명을 가진 파일을 찾고 그 안에 search라는 단어가 포함되어 있을경우, replace로 수정합니다. 
문자열안에 " 이 들어갈 경우 x22로 써줍니다. 
  
find ./ -mtime 0 
24시간 내에 수정된 파일을 뿌려줍니다. 
  
아쉽게도 출력되는 것에 대한 제어는 잘 모르겠습니다. ㅡ.ㅡ; 
  
  

특정 용량 이상의 파일을 찾고 싶을때 
find /home/ -size +2000000 

특정 확장자의 파일을 찾고 자동으로 지우고 싶을때 
find /home/ -name *.asf -exec rm -rf {} ; 

퍼미션 706인 디렉토리를 차자서 707로 변환 
find /home/ -perm 706 -type d -exec chmod 707 {} ; 
chmod 707 `find -perm 706` 

사용자 계정에서 환경설정 파일 검색했나 확인 
find /home/ -maxdepth 2 -name .bash_history -exec grep -H .conf {} ; | 
less 

3일 이내 동안 수정된 파일 확인 
find /home/ -mtime -3 

3시간 이내 동안 수정된 파일 확인 
find /home/ -mmin -3 

수정된지 3시간 이후된 파일 
find /home/ -mmin +3 

현재폴더에서 수정된지 1시간 이내의 파일들만 압축 
tar cvzf filename.tgz $( find ./ -type f -mmin -60 ) 

 

확장자 일괄변경 
find . -name *.php -exec rename .php .mtml {} \; 

파일내용 
find . -name *.* -exec perl -p -i -e 's/old/new/g' {} \; 

일괄삭제 
find . -name *.bak -exec rm -rf {} \; 

 

 

-exec 명령 : 주어진 명령을 수행한다. 가장 흔히 쓰이는 행동들 중 하나이다, 
                   명령에 매개변수들을 지정하는 방법은 이 표 다음에서 설명한다. 
                   이 행동 끝에 \;를 붙어야 한다.
-ok 명령 : -exec와 같되 각 파일마다 명령을 수행하기 전에 사용자에게 확인을 
                받는다. 이 행동 역시 끝에 \;를 붙여야 한다.
-print : 파일 이름을 출력한다.


1. root 디렉토리로 부터 *.jpg 를 찾아 현재 디렉토리에 복사하기
☞  find . -type f -name *.jpg -exec cp {} . \;

2. 현재 디렉토리로 부터 10M 이상의 화일을 찾아서 출력하기.
☞  find . -type f -size +10000 -exec ls -alh {} \;

3. 현재 디렉토리로 부터 하루 이상 경과한 화일을  imsi 디렉토리로 이동 시키기.
☞  find . -atime +1 -type f -exec mv {} imsi\;

4. "-F"라는 화일을 찾아 삭제하기.
☞  find . -name "-F" -exec rm {} \;

5. 현재 디렉토리에서 대소문자에 상관없이 " 찾는 문자열" 을 포함한 라인을 출력하기.
☞  find . -exec grep -i "찾는 문자열" {} \;

6. 현재 디렉토리로 부터 *.Z 화일을 제외한 나머지 화일들을  *.Z으로 압축하기
☞  find .  \! -name "*.Z" -exec compress -f {} \;

7. 현재 디렉토리로부터 *.Z 화일을 제외하고 또한 "제외할 화일명" 외의 화일들을 터미널 로 출력과 동시에 /tmp/list 에 추가하기
☞  find . -type f \! -name "*.Z" \! -name "제외할화일명" -print | tee -a /tmp/list

8. 현재 디렉토리로부터 이름이 *.ini인 화일을 출력하기
☞  find . -name "*.ini"

9. 현재 디렉토리 이하 서브 디렉토리를 포함한 모든 화일들에 대해 퍼미션 755로 변경하기
☞  find . -exec chmod 755 {} \;   or  chmod -R 755 ./ ;

10. 현재 디렉토리로 부터 user1 소유자로 표시된 화일들을 모두 user2의 사용자 권한으로 변경하기
☞  find  . -user xuser1 -exec chown -R user2 {} \; or  chown -R user2 ./

11. 현재 디렉토리로 부터 "찾을  xxx넘"을 대소문자 구별없이 검색하여 출력하기
☞  find . -exec grep -i "찾을 xxx넘" {} \;
☞  find . -grep -i "찾을 xxx넘" {} \;
☞  find . -ls -exec grep "찾을 xxx넘" {} \;


12. 6일 이전의 화일들을 찾아 출력하기
☞  find . -atime +6

13. 30일 이전 업데이트된 화일들의 라인수를 알아보기
☞  find . -atime +30 -exec ls \; | wc -l

14. /raid 디렉토리로 부터 "디렉토리명"을 가진 화일이 존재하면 / 복사할 경로 로 복사 하기.
☞  find /raid -type d -name "디렉토리명" -ok cp /복사할경로 {} \;

15. 찾을 화일 검색도중 에러 및 경고 메시지는 표시하지 않게 하기
☞  find . -name "찾을 화일" -print 2> /dev/null

16. 대소문자 구분없이  " 찾는글"을 포함된 화일에 대한 내용을 출력하지 않고, "찾는넘.list" 화일에 저장 및 more를 통해 검토하기
☞  find . -print -exec grep -i "찾는글" {} \; > 찾는넘.list
☞  find . -print -exec grep -i xeroxrel {} \; | more


17. 파일 권한이 700인 파일을 찾아준다.
☞  find . -perm 700 -print

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

19. 파일의 블럭 크기가 1024 이상인 파일을 찾아준다. 
☞ find . -size +1024 -print 

20. 파일 이름이 core이고 크기가 2048블럭 이상인 파일을 찾아준다. 
☞ find . -name core -size +2048 -print 

21. 30일 이전에 억세스되었던 파일을 찾는다. 
☞ find . -atime +30 -print 

22. 7일 이내에 수정된 적이 있는 파일을 찾는다. 
☞ find . -mtime -7 -print 

23. 30일 이전에 억세스된 파일 중 *.c를 찾아 ls -l 한다. 
☞ find . -name \*.c -atime +30 -exec ls -l {} \; 

24. 현재 디렉토리 밑에서 이름이 core인 파일을 찾아 지운다(지우기 전에 정말 
지울 지를 물어본다.) 
☞ find . -name core -exec rm -i {} \; 

25. 마운트된 디렉토리들은 검색하지 말라고 알려주는 효과를 낸다.
☞ find / -mount -name test -print

26. 현재 위치의 df.sh 파일보다 최근에 만들어진 파일형식을 출력한다.
☞ find -newer df.sh -type f -print

27. 현재 위치에서 df.sh 파일보다 최근에 만들어진 모든 것을 출력
☞ find -newer df.sh -print

28. 현재 위치에서 set.sh 파일보다 최근에 만들어진 모든 파일들은 모두 출력 된다.
☞ find . -newer set.sh -type f -exec ls -l {} \;

반응형