OS_Linux&Unix

[Linux] find 명령어 (-name, -type, -perm, -szie, -mtime, exec, xargs 옵션 활용)

최선을 다하자! 2024. 3. 20. 11:13

OS : RedHat Enterprise Linux 8.4

 

==



find

 

파일 또는 디렉토리명으로 찾기

 

1. find . -name 파일명

지정 디렉토리에서 rpm 파일 모두 찾기

 

2. find / -type d -name 디렉토리명

지정 디렉토리에서 디렉토리 형태의 이름이 networkblackbox인 디렉토리 찾기

 

3. find / -type f -name 파일명 

지정 디렉토리에서 파일 형태 중 .sh 파일 찾기

 

 

 

권한으로 찾기

 

 

1. find . -type f -perm 권한

현재 디렉토리에서 755 권한을 가진 파일 출력  

 

2. find / -type f -perm 권한

: / 지정 디렉토리에서 권한이 777 인 파일을 찾기

 

    find / -type f ! -perm 권한

: 지정 디렉토리에서 권한이 755 인 파일을 제외하고 찾기

 

 

 

 

3. find . -perm /u=r

지정 디렉토리에서 권한을 기준으로 찾고 소유자에게 읽기 권한이 있는 파일을 찾기

 

 

4. find . -perm /a=x

지정 디렉토리에서 권한을 기준으로 찾고 모든 사용자에게 실행가능한 파일 찾기

 

 

 

5. find / -type f -perm 777 -print -exec chmod 644 {} \;

지정 디렉토리에서 파일 형태와 777 권한을 기준으로 찾고 644 권한으로 변경하여 출력

 

 

 

6. find . -type f -name "*.rpm" -exec rm -f {} \; -print

지정 디렉토리에서 파일형태로 이름이 .rpm 인 것을 모두 찾아서 삭제

 

 

 

7.find / -user grafana -name grafana

사용자가 grafana로 된 파일 중 grafana 파일 찾기 

 

 

 

8. find / -type f -size [파일사이즈] -exec rm -f {} \; -print

 

 

메가바이트 단위로 출력

ls -arlt | awk '{$5 = sprintf("%.2f MB", $5 / 1024 / 1024)} 1'

 

 

 

9. find . -type f -mmin -30 -ls 

수정된지 30분내의 파일 찾기

 

 

 

 

 

find . -cmin -10

수정된지 10분이내 찾기

 

 

 

10. find . -mtime 0 -mtime -20

현재부터 20일 내에 수정된 파일 찾기

 

 

 

11. find / -type f -amin -10

파일 접근 시간이 10분 이내인 것을 찾기

 

 

 

12. find . -type f -size +100c -size -600c -ls

100바이트 보다 크고 600바이트보다 작은 파일 찾기

 

 

 

 

13.find /test2/ -type f -size +100c -size -600c | xargs tar -cvf /test2/jwchoi/file/tar/jwchoi.tar

정해진 디렉토리에서 정해진 사이즈 내에 파일들을 찾아서 tar로 묶어서 지정 디렉토리로 생성

 



14. find /test2/jwchoi/file/tar/ -type f -mtime 0 -exec rm -f {} \; -print

지정 디렉토리에서 오늘 생성된 파일을 찾고 삭제.

 

 

 

- exec / xargs 동작 과정 -
find . -name "H*" -type f -exec rm -f {} \;
rm –f H1
rm –f H2
rm –f H3

find . -name "H*" -type f | xargs rm -f
rm –f H1 H2 H3

 

exec , xargs 옵션 차이점?

 

exec의 경우 각각

find로 찾은 파일에 대한 rm 명령이 호출되지만,

 

xargs의 경우

find로 찾은 파일을 세부리스트로 나누면서 각각의 리스트에 대해 rm을 호출하여 exec보다 실행 부하 측면에서 효율적이다.