find
find 명령어는 특정 경로에서 특정 파일을 찾을 때 사용합니다.
기본적으로 Recursive 형태로 수행하기 때문에 디렉터리를 탐색하는 경우 내부 디렉터리까지 탐색해 줍니다.
다른 명령어와 조합하여 매우 유용하게 사용할 수 있습니다.
기본 사용 방법
find ${탐색할 경로} -name ${찾을 파일 이름}
예제
파일 찾기
▶ 현재 경로에서 'happygram.txt' 파일 찾기
find . -name 'happygram.txt'
원하는 파일 제외하고 모두 지우기
▶ 현재 경로에서 'happygram.txt' 파일만 제외하고 모두 지우기
find . ! -name 'happygram.txt' -type f -exec rm -f {} \;
▶ 현재 경로로부터 2레벨 하위 디렉터리에서 'happygram.txt' 파일만 제외하고 모두 지우기
find ./*/* ! -name 'happygram
.txt' -exec rm -rf {} \;
jar 파일 중 원하는 파일 찾기
▶ 현재 경로의 모든 jar 파일 중 'happygram' 의 파일명을 포함하는 파일 찾기
find . -name '*.jar' -exec jar -tf {} \; | grep happygram
find . -name '*.jar' | xargs grep happygram
find . -name '*.jar' | xargs grep -l happygram
파일 찾아서 문자열 변환
▶ 현재 경로에서 파일을 찾아서 'happy' 문자열을 'happygram' 문자열로 변환
find . -type f -exec sed -i 's/happy/happygram/g' {} \;
특정 대소문자 찾아서 파일 변환
▶ 현재 경로에서 Happygram.txt 혹은 happygram.txt 파일을 찾아서 'happy' 문자열을 'happygram' 으로 변환
find . -name '*[Hh]appygram.txt' | xargs sed -i s/happy
/happygram/
find or 조건
▶ 현재 경로에서 'happygram.txt' 혹은 'happygram.xml' 찾기
find . -name 'happygram.txt' -o -name 'happygram.xml'
find and 조건
▶ 현재 경로에서 'happygram.txt' 파일이 아니고 'happygram.xml' 찾기
find . ! -name 'happygram.txt' -and -name 'happygram.xml'
특정 날짜 이후 날짜 변경 파일 조회
▶ 현재 경로에서 10일 전 그 이후 바뀐 파일 리스트 조회
find . -type f -mtime -10 -ls
디렉터리를 제외한 파일 갯수 Recursive 탐색
find -type f | wc -l
'IT - DevOps > Linux' 카테고리의 다른 글
[Linux] 리눅스 명령어 - svn (0) | 2018.12.05 |
---|---|
[Linux] 리눅스 명령어 - sed (0) | 2018.12.04 |
[Linux] 리눅스 명령어 - tar (0) | 2018.11.20 |
[Linux] 리눅스 명령어 - ls (0) | 2018.11.16 |
[Linux] 리눅스 명령어 - cp (0) | 2018.11.14 |