[Linux] find 명령어 (-name, -type, -perm, -szie, -mtime, exec, xargs 옵션 활용)
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보다 실행 부하 측면에서 효율적이다.