logo

예제를 통해 Linux/Unix에서 명령 찾기

find 명령은 디렉토리 내에서 특정 파일을 찾는 데 도움이 됩니다. 권한, 사용자 소유권, 수정, 날짜/시간, 크기 등과 같은 다양한 조건에 대한 파일 목록을 찾는 데 사용됩니다.

Unix 계열 및 기타 운영 체제에서 find 명령은 사용자가 지정한 몇 가지 형식을 기반으로 파일을 찾고 일치하는 모든 개체의 경로 이름을 인쇄하거나 다른 작업이 요청된 경우 해당 작업을 구현하는 명령줄 유틸리티입니다. 일치하는 모든 개체.

시작하려는 위치에서 검색을 시작한 후 계층 구조(일반적으로 트리)의 디렉터리(노드)를 반복적으로 탐색합니다. find 명령은 시작 디렉토리 아래의 하나 이상의 저장 장치에 속하는 다양한 파일 파티션 시스템에서 검색하고 탐색할 수 있습니다.

검색 형식에는 파일 이름을 기준으로 일치하는 패턴이나 수정 시간 또는 파일 액세스 시간을 기준으로 일치하는 시간 범위가 포함됩니다. find 명령은 기본적으로 현재 작업 디렉토리 아래의 모든 파일 목록을 제공합니다. 그러나 사용자는 시작 디렉터리에서 원하는 최대 수준으로 검색을 제한할 수 있습니다.

연관된 찾기 프로그램은 전체 파일 시스템을 이름으로 검색하는 더 빠른 기술을 제공하기 위해 Fine 명령에서 얻은 색인화된 파일 데이터베이스를 적용합니다.

찾기 유틸리티는 기본적으로 대부분의 유틸리티와 함께 ​​제공됩니다. 리눅스 배포판 이므로 추가 패키지를 설치할 필요가 없습니다. 가장 필수적이고 자주 사용되는 명령 중 하나입니다. 리눅스 체계.

 find 

두 가지 옵션은 find가 심볼릭 링크를 고려하는 방법을 결정합니다. 기본 특성은 기호 링크를 추구하지 않는 것입니다. 깃발, 즉, -엘 , 심볼릭 링크를 추구하는 찾기로 이어질 것입니다. 깃발, 즉, -시간 , 명령줄 인수를 계속하면서 기호 링크만 추구합니다. 플래그는 find 명령에 대한 POSIX 표준에 언급되어 있습니다. 기본 확장은 플래그입니다. 즉, -피 , 다음 심볼릭 링크를 명시적으로 비활성화합니다.

최소한 경로는 표현식을 예상해야 합니다. find 명령은 와일드카드를 내부적으로 해석할 수 있으며 쉘 글로빙을 관리하려면 명령을 주의 깊게 인용해야 합니다.

표현식 구성 요소는 일반적으로 셸 구문 내에서 공백으로 표시되는 명령줄 인수 경계로 격리됩니다. 왼쪽에서 오른쪽으로 고려됩니다. 여기에는 OR 및 AND와 같은 논리적 구성 요소는 물론 조건자(작업 및 필터)도 포함될 수 있습니다. GNU find에는 POSIX에서 언급되지 않은 몇 가지 다른 기능이 포함되어 있습니다.

다음 기호는 디렉토리를 지정하는 데 사용됩니다.

(.) : 현재 디렉토리 이름

(/) : 루트 디렉터리의 경우

찾기 명령의 간략한 역사

find 명령은 버전 5 Unix에서 프로그래머의 작업대 프로젝트에 의해 지정되었으며 딕 헤이트 cpio와 함께 사용할 수 있도록 개발되었습니다.

원래 find 명령의 GNU 구현은 다음에 의해 지정되었습니다. 에릭 데커 . 나중에는 다음에 의해 개발되었습니다. 데이비드 맥켄지, 팀 우드 , 그리고 제이 플렛 . 또한 find 명령이 IBM i OS로 이식되었습니다.

개미 대 메이븐

술어

널리 사용되는 기본 색상은 다음과 같습니다.

    -이름 패턴:파일 이름이 주어진 shell-glob 패턴과 동일한지 확인합니다.-유형 유형:파일이 제공된 유형인지 확인합니다.-인쇄:항상 진정한 가치를 제공합니다. 현재 파일 이름과 개행 문자를 stdout에 인쇄합니다.-인쇄0:항상 진정한 가치를 제공합니다. 현재 파일 이름과 널 문자를 stdout에 인쇄합니다. POSIX에서는 필요하지 않습니다.-exec 프로그램 [인수 ...];:항상 진정한 가치를 제공합니다. 고정된 주어진 인수와 현재 파일 경로를 사용하여 프로그램을 실행합니다.-exec 프로그램 [인수 ...] { } +:항상 진정한 가치를 제공합니다. 고정된 주어진 인수와 가능한 여러 경로를 사용하여 프로그램을 실행합니다. 거의 모든 구현에서 다른 {} 발생은 지정된 이름의 추가 복사본을 의미합니다(POSIX에서는 필요하지 않은 측면).-ok 프로그램 [인수 ...];:-exec와 동일하지만 프로그램이 0을 제공하면 false 또는 true를 반환합니다.

표현식이 -ok, -exec, -print 또는 -print0 중 어느 것도 활용하지 않는 경우 조건이 참인 경우 -print를 구현하는 기본값을 찾습니다.

연산자

연산자는 find 명령 표현식을 향상시킵니다. 내림차순으로 언급됩니다.

    ( expr ):이 연산자는 우선순위를 강제할 수 있습니다.! 특급:expr이 false를 반환하면 true를 반환합니다.
  • expr1 expr2 (또는 expr1 -a expr2 : AND. expr1이 false인 경우 expr2는 평가되지 않습니다.
  • expr1 -o expr2 : 또는. expr1이 true인 경우 expr2는 평가되지 않습니다.

find 명령의 예

find 명령의 다음 예를 살펴보겠습니다.

자바 hasnext

이름으로 파일 찾기

확장자가 '.txt'로 끝나는 모든 파일을 검색할 수 있습니다. 그렇게 하려면 아래 명령을 실행하십시오.

 find . -name '*.txt' 

위 명령은 현재 작업 디렉터리의 모든 텍스트 파일을 나열합니다. 아래 출력을 고려하십시오.

리눅스 찾기

위 출력에서 ​​'.txt' 확장자를 가진 모든 파일이 find 명령으로 나열됩니다.

유형별로 파일 찾기

'-type' 매개변수는 파일 유형을 지정하는 데 사용됩니다.

일부 파일 형식은 다음과 같습니다.

  • f: 일반 파일
  • d: 디렉토리
  • l: 심볼릭 링크
  • c: 캐릭터 디바이스
  • b: 블록 장치

아래 명령을 고려하십시오.

 find . -type d -name '*.bak' 

위 명령은 '.bak' 확장자를 가진 모든 디렉토리를 나열합니다. 아래 출력을 고려하십시오.

리눅스 찾기

위 출력에서 ​​'find . -type d -name '*.bak'는 '.bak'로 끝나는 모든 디렉토리를 표시합니다.

최신 파일 찾기

'-newer' 매개변수는 언급된 파일보다 최신 파일을 검색하는 데 도움이 됩니다. 아래 명령을 고려하십시오.

 find . -newer msg.txt 

위의 명령은 현재 작업 디렉터리에서 'msg.txt'보다 최신인 모든 파일을 표시합니다. 아래 출력을 고려하십시오.

리눅스 찾기

위 출력에서 ​​표시된 모든 파일은 'msg.txt' 파일보다 최신입니다.

파일 찾기 및 삭제

-delete 옵션은 특정 파일을 삭제하는 데 사용됩니다. 이 명령은 한 번 실행되면 실행 취소 옵션이 없으므로 사용 시 매우 주의해야 합니다. 아래 명령을 고려하십시오.

 find . -name Demo.txt -delete 

위 명령은 현재 작업 디렉터리에서 'Demo.txt' 파일을 삭제합니다. 아래 출력을 고려하십시오.

호랑이와 사자의 차이
리눅스 찾기

디렉토리 찾기

'type -d' 옵션은 디렉토리를 찾는 데 사용됩니다. 아래 명령을 고려하십시오.

 find . type -depth -name Newdirectory 

위의 명령은 'Newdirectory' 위치를 찾습니다. 아래 출력을 고려하십시오.

리눅스 찾기

수정 시간으로 파일 찾기

'-mtime' 옵션 뒤에 일수가 표시되어 수정된 파일을 찾는 데 사용됩니다. 일수는 양수일 수도 있고 음수일 수도 있습니다. 음수 값은 -1이 마지막 날에 사용된 것과 마찬가지로 미만으로 사용되며 마찬가지로 +1은 하루 이상 전의 파일을 찾습니다. 아래 명령을 고려하십시오.

 find ./Newdirectory -mtime -1 

위의 명령은 마지막 날에 수정된 파일을 찾습니다. 아래 출력을 고려하십시오.

리눅스 찾기

권한으로 파일 찾기

'-perm' 옵션은 권한별로 파일을 찾는 데 사용됩니다. '-perm' 옵션을 사용하여 find 명령을 실행하고 필요한 값을 전달합니다. 아래 명령을 고려하십시오.

 find ./ -perm 777 

위 명령은 모든 사람이 읽고, 쓰고, 실행할 수 있는 지정된 디렉터리의 파일을 나열합니다.

파일 찾기 및 바꾸기

파일을 찾고 바꾸려면 find 명령과 sed 명령을 결합해야 합니다. 파일에 대해 작업하려면 find 명령에 '-exec' 옵션을 사용하십시오. 아래 명령을 고려하십시오.

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

위 명령에서 지정된 항목이 대체됩니다. 아래 출력을 고려하십시오.

리눅스 찾기

여러 파일 내에서 텍스트 찾기

다양한 파일에서 텍스트를 찾기 위해 find 명령과 grep 명령의 또 다른 조합을 만들 수 있습니다. 아래 명령을 고려하십시오.

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

위 명령은 'Newdirectory' 디렉토리 내의 모든 텍스트 파일에서 'demo' 텍스트가 포함된 행을 찾습니다. 아래 출력을 고려하십시오.

리눅스 찾기

위 출력에서 ​​'demo'라는 텍스트가 표시된 줄을 볼 수 있습니다.

모든 디렉토리 검색

 $ find / -name file1 -type f -print 

위 명령은 제목이 file1인 일반 파일의 모든 디렉터리를 찾아 화면에 인쇄합니다. 일반적으로 이런 방식으로 파일을 검색하는 것은 좋지 않습니다. 시간이 많이 걸릴 수 있습니다. 따라서 디렉토리를 언급하는 것이 가장 좋습니다. 일부 운영 체제에서는 find 명령에 적합하지 않은 파일 시스템(동적)을 마운트할 수 있습니다. 셸에 고유한 문자가 포함된 더 복잡한 파일 이름은 작은따옴표로 묶어야 할 수도 있습니다.