리눅스 find 명령어
리눅스 find 명령어는 여러가지 다양한 기준으로 파일을 효율적으로 검색할 때 사용할 수 있는 명령어입니다. 리눅스 사용자라면 유용한 도구로써 사용할 수 있는 find 명령어의 사용법과 옵션에 대해 알아 보겠습니다.
✅ find 명령어 정의
Linux의 find 명령은 계층 구조 내에서 포괄적인 파일 및 디렉터리 검색을 위해 설계 된 동적 유틸리티입니다. 사용자는 이름, 크기, 수정 시간 등을 기준으로 검색할 수 있습니다.
# 기본 사용 옵션 #
find [디렉터리] [-옵션] [표현식]
# 경로 시작 검색
find /path/
# txt. 파일을 경로에서 찾기
find /home/ -type f -name '*.txt'
# txt. 특정 디렉터리 명을 경로에서 찾기
find /home/ -type f -name 'docs'
✅ 리눅스 find 명령어 옵션
아래 목록은 find 명령 옵션입니다.
✅ find 명령 예시
◻ 자주 사용하는 기본 명령어
# 현재 폴더(이하) 파일 퍼미션을 모두 644로 변경
find . -type f -exec chmod 644 {} \;
# 현재 폴더(이하 디렉터리 권한을 755로 변경
find . -type d -exec chmod 755 {} \;
# 현재 폴더(이하 특정 단어(old)가 포함된 파일을 삭제
find ./ -type f -name '*.old' -exec rm {} \;
find ./ -type f -name '*.old' -delete
# 현재 폴더에만 있는 *.old 파일을 찾아서 삭제
find ./ -maxdepth 1 -type f -name '*.old' -exec rm {} \;
# 현재 폴더부터 바로 하위 폴더까지 *.old 파일을 찾아서 삭제\
find ./ -maxdepth 2 -type f -name '*.old' -exec rm {} \;
# 현재 폴더(이하) 디렉토리 갯수 확인
find ./ -type d | wc -l
◻ 폴더 지정하여 활용 -maxdepth
-maxdepth 1 옵션의 경우 현재 폴더 내에서만 데이터를 적용하기 때문에 /home/user/public_html/ 폴더에 접속한 상태에서 .txt 확장자 파일을 지운다고 할 경우 아래와 같이 옵션을 사용해서 이하 폴더의 .txt 확장자 파일을 남기고 작업을 할 수 있습니다.
[root@rocky-linux public_html]# pwd
/home/rocky/public_html
find ./ -maxdepth 1 -type f -name '*.txt' -exec rm {} \;
◻ find의 -size 옵션 활용
파일 사이즈에 대한 -size 옵션 활용 방법입니다.
# 5M보다 크고 30M보다 작은 파일 찾기
find ./ -size +5M -size -30M
# 512M보다 크고 1024G 보다 작은 파일 찾기
find ./ -size +512M -size -1024G
- c : 바이트
- k : 키로바이트
- M : 메가바이트
- G : 기가바이트
◻ xargs 활용 및 기타 활용
# 현재 디렉토리에서 가장 큰 파일 찾기
find . -type f | xargs du -s | sort -n | tail -1
# 현재 디렉토리 위치에서 하위디렉토리를 포함하여 string 이란 문자열을 포함한 파일 검색
find . -type f | xargs grep "string"
# 현재 디렉토리 밑에서 첫글자가 영어 대문자인 모든 파일을 찾을 경우
find . -name "[A-Z]*'' -print
grep, du 등의 명령어를 파이프(pipe) 다중 명령어를 사용할 땐 xargs를 같이 사용해 줍니다. xargs의 경우는 find 명령어를 사용하면서 /path 경로에 파일들이 너무 많으면 “Argument list too long”이란 메시지가 나오면서 실행되지 않기 때문에 다른 명령어와 같이 사용할 때 오류 메시지가 나오면 활용할 수 있습니다.