find 라는 명령어는 시스템 관리자가 자주 사용하는 명령어 중 하나이다. 디스크에 있는 파일 또는 디렉터리를 검색하는 명령어이다.
사용법
find <경로> <연산자>
위에서 <경로>는 find가 파일 또는 디렉터리를 찾기 위한 최상 위치이다.
예을 들면, '/'는 루트(root) 디렉터리 부터 찾고, '.'은 현재 디렉토리 부터 찾는다.
아래 예제는 루트 디렉터리부터 하위 디렉터리까지 확장자가 .sh 인 파일을 찾는다.
$ find / -name "*.sh"
예제
기본적인 예제는 생략하고, 시스템 관리자가 유용하게 사용할 수 있는 몇 개 예제를 기술한다.
<예제1>
특정 파일시스템이 과도하게 사용하는 경우에 파일 크기가 100M 이상인 파일을 찾을때,
$ find / -size +102400k -print | xargs ls -l
또는
$ find / -size +102400000c -print | xargs ls -l
<예제2>
특정 파일을 정리하고자 할때 사용되는 오래동안(예, 30일 이상) 수정되지 않은 파일을 찾을때,
$ find / -mtime -30 -print
<예제3>
애플리케이션 또는 구성 파일 등 내용이나 속성값 변경이 의심될때, 최근 특정 시간(예, 1일) 기준으로 변경된 파일을 찾을 때,
$ find / -ctime -1 -a -type f | xargs ls -l
<예제4>
파일이 아닌 디렉터리를 찾을 때,
$ find / -name httpdocs -type d
<예제5>
대소문자 구분없이 파일명으로 검색할 때,
$ find / -iname [문자열] (Linux는 지원하나, 타 Unix는 iname 옵셥을 지원하지 않을 수 있음)
또는
$ find / | grep -i [문자열]
<예제6>
파일명에 특수문자가 포함되어 파일을 관리자가 삭제하기 곤란한 경우에는 inode 값으로 조회하여 삭제할 수 있다. 이때 사용하는 명령어는 아래와 같다.
$ ls -il (파일목록과 함께 inode 값도 표시)
$ find . -inum [inode번호] (위에서 조회한 inode에 해당하는 파일을 찾음)
$ find . -inum [inode번호] -exec rm {} \; (해당 inode값을 가지고 있는 파일 삭제)
<예제7>
심볼릭 링크가 있는지 검색할 때,
$ find / -type l -exec ls -l {} \;
<예제8>
확장자 txt 파일을 찾아 해당 파일에서 문자열 "foo"를 "bar"를 치환한하여 표준 출력한다.
$ find . -type f -name "*.txt" -exec sed -i "s/foo/bar/g" {} \;
참고) sed -i 옵션은 Linux에서 사용가능함
<예제9>
$ find . -name *.* | xargs grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
<예제10>
$ find . -name "*.properties" | awk '/문자열/ {print FILENAME, NR}' {} \;
<예제11>
$ find . \( -name "*.html" -o -name "*.js*" -o -name "*.txt" \)
'OS > 공통-명령어' 카테고리의 다른 글
[정보] OS별 32비트 또는 64비트 확인 방법 (0) | 2017.09.17 |
---|---|
[정보] UNIX/LINUX 플랫폼별 core 분석 툴 (0) | 2017.07.23 |
[Tips] 시스템/OS별 스레드 모니터링 (0) | 2017.07.04 |
[명령어] 운영체제별 시스템콜 확인 명령어 (0) | 2017.03.26 |
[명령어] iconv 명령어 이해 (0) | 2017.02.20 |