시스템에 수많은 파일이 있을 때 특정 파일을 찾는 것은 어려울 수 있습니다. find 명령어는 이름, 유형, 크기, 수정 시간과 같은 기준을 사용하여 디렉터리 트리를 검색합니다.
명령줄 · 레슨 14
find
디렉터리 트리를 이름, 유형, 크기, 시간으로 검색하고 확인한 결과에 작업하는 방법을 배웁니다.
검색 시작 위치 선택하기
기본 구문은 다음과 같습니다:
find [PATH] [EXPRESSION]
경로는 시작점을 선택하고 표현식은 그 아래 항목을 선택하거나 항목에 작업을 수행합니다.
예를 들어 /home 디렉터리와 그 하위 디렉터리에서 puppies.jpg라는 파일을 찾으려면 다음과 같이 사용합니다:
$ find /home -name puppies.jpg
검색은 기본적으로 재귀적입니다. 현재 디렉터리 트리를 검색하려면 시작 경로로 .을 사용합니다.
현재 디렉터리와 그 하위에서 이름이 notes.txt인 항목을 찾는 명령어는 무엇인가요?
이름과 유형 일치시키기
find의 가장 일반적인 용도 중 하나는 파일 이름으로 검색하는 것입니다. -name 옵션은 이름을 정확히 일치시키거나 셸 스타일 패턴으로 일치시킵니다.
$ find . -name "*.txt"
와일드카드 패턴은 현재 쉘이 먼저 확장하지 않고 find에 그대로 전달하도록 따옴표로 묶습니다. 대소문자를 무시하려면 -name 대신 -iname을 사용합니다.
검색하려는 항목의 유형을 지정할 수도 있습니다. -type 옵션이 이 용도로 사용됩니다. 예를 들어, 파일 대신 디렉터리를 찾으려면 d를 사용할 수 있습니다.
$ find /home -type d -name MyFolder
이 명령어에서는 유형을 디렉터리인 d로 설정하고 MyFolder라는 이름의 항목을 찾고 있습니다. 일반 파일만 검색하려면 -type f를 사용합니다.
현재 디렉터리 아래에서 이름이 .txt로 끝나는 일반 파일을 찾는 명령어는 무엇인가요?
크기와 수정 시간 일치시키기
파일 크기로 검색할 수 있습니다:
$ find . -type f -size +10M
$ find . -type f -size -1k
대문자 M은 1,048,576바이트 단위이고 소문자 k는 1,024바이트 단위입니다. find는 숫자를 비교하기 전에 크기를 선택한 단위로 올림합니다.
수정 시간으로도 검색할 수 있습니다:
$ find . -type f -mtime -7
$ find . -type f -mtime +30
-mtime은 수정된 뒤 지난 완전한 24시간 단위 수를 검사합니다. -mtime -7은 7보다 작은 값, -mtime +30은 30보다 큰 값과 일치하며 달력의 자정 경계를 기준으로 하지 않습니다.
. 아래에서 수정된 지 완전한 24시간 단위로 7보다 적은 일반 파일을 찾는 명령어는 무엇인가요?
일치 항목 출력 및 작업하기
기본적으로 find는 일치하는 경로를 출력합니다. -print, -delete, -exec와 같은 작업을 추가할 수 있습니다.
일치 항목을 명시적으로 출력하기:
$ find . -name "*.log" -print
각 일치 항목에 대해 ls -l 실행하기:
$ find . -name "*.log" -exec ls -l {} \;
\; 형식에서 {}는 명령어를 실행할 때마다 현재 일치 경로로 바뀝니다. 세미콜론은 -exec 작업의 끝이며 쉘이 find에 전달하도록 이스케이프합니다.
-delete나 파일을 변경하는 -exec 같은 파괴적 작업 전에는 같은 조건에 -print를 붙여 모든 결과를 확인하세요. 좁은 시작 경로와 -maxdepth N으로 범위를 제한할 수도 있습니다.
나중에 오래된 .log 파일을 삭제할 수도 있는 find 명령어를 작성 중입니다. 먼저 무엇을 해야 하나요?
find . -name "*.log" -exec ls -l {} \;에서 {}는 무엇을 나타내나요?
권한 거부 메시지는 보통 현재 계정이 트리 일부를 검색할 수 없음을 뜻합니다. 관련 있는 더 좁은 시작 경로를 선택하고, 확장된 접근을 이해하고 의도하기 전에는 관리자 권한을 추가하지 마세요.
검색 표현식을 만드는 방법은 다음 실습으로 연습해 보세요.
- Linux find Command: File Searching - 이 실습은 다양한 기준으로 파일과 디렉터리를 검색하는 다용도 유틸리티인
find명령어 소개를 제공합니다. 특정 파일을 찾는 연습을 하게 됩니다. - Discover Critical System Resources -
find를 포함한 필수 Linux 명령어를 배우고 파일 시스템을 효율적으로 탐색하며 중요한 시스템 리소스를 발견하는 연습을 합니다.
레슨 완료
find 완료
이제 범위가 뚜렷한 find 표현식을 만들고 작업 전에 결과를 검증할 수 있습니다.
유용한 범위에서 가장 좁은 시작 경로를 선택할 수 있습니다.
이름 패턴을 따옴표로 묶고 유형 검사와 결합할 수 있습니다.
크기 또는 완전한 24시간 수정 기간으로 필터링할 수 있습니다.
필요할 때 재귀 깊이를 제한할 수 있습니다.
파괴적 작업 전에 일치 항목을 출력하고 확인할 수 있습니다.