IT - DevOps/Linux

[Linux] 리눅스 명령어 - find

happygram 2018. 11. 14. 00:24

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