linux라는 이름으로 파일을 검색하세요. find 명령: Linux에서 강력한 파일 찾기. 특정 폴더의 파일 검색

오늘 우리는 터미널을 사용하여 Linux에서 파일을 찾는 가장 인기 있는 방법 중 일부를 살펴보겠습니다.

1) 찾기:다음에서 파일을 검색하려면 명령줄"찾기" 명령을 사용할 수 있습니다. 이 명령의 구문은 다음과 같습니다.

경로 기준 찾기 작업

- 검색 디렉터리를 지정하는 섹션입니다. 아무것도 지정하지 않으면 현재 디렉터리를 검색합니다.

"기준" - 검색 옵션.

행동 - 검색 상태에 영향을 미치거나 제어하는 ​​옵션(예:

2) 다음을 찾습니다:"위치하고 있다"이는 "find -name" 명령의 대안입니다. find 명령은 파일 시스템의 선택된 부분에서 파일을 찾으며 프로세스가 그리 빠르지 않을 수 있습니다. 반면에 Locate 명령은 이 목적을 위해 특별히 생성된 데이터베이스 /var/lib/ locatedb에서 파일을 검색하므로 훨씬 빠릅니다. 데이터베이스를 업데이트하려면 다음 명령을 사용하십시오. 업데이트됨.

3) 여기서는:어디에"코드 위치(옵션 -b), 맨페이지(옵션 -m) 및 소스 파일(옵션 -s) 지정된 명령에 대해. 옵션을 지정하지 않으면 사용 가능한 모든 정보가 표시됩니다. 이 명령은 "보다 빠릅니다. 찾다"그러나 덜 완전합니다.

4) 이는:팀 " 어느"지정된 명령에 대해 PATH 변수에 나열된 모든 경로를 검색합니다.

5) 유형:

옵션 없이 호출되면 이름이 어떻게 해석되는지 보여줍니다.

명령 이름으로 사용되는 경우. 옵션을 사용하는 경우 -ㅏ, 팀 유형실행 파일이 있는 모든 디렉터리의 목록을 제공합니다.

해당 이름. 목록에는 별칭과 함수도 포함됩니다.

옵션을 지정하지 않는 이상 -피. 에게

옵션이 지정된 경우 명령 해시가 참조되지 않습니다. -ㅏ. 팀 유형 0을 반환하고,

인수 중 하나 이상이 발견되면 1, 그렇지 않으면 1입니다.

경비원

Explo.ru - 관광 및 레크리에이션에 관한 모든 것: 핫 투어 및 터키, 이집트 여행,

Habr 커뮤니티 전체에 안녕하세요.
이것은 나의 첫 번째 게시물이며 마지막이 아니길 바랍니다. 그러므로, 본문의 온갖 단점, 버그, 약간의 묽음은 불가피하니, 엄밀히 판단하지 마시길 바랍니다 :)
저는 "초보자를 위한 콘솔"이라는 주제로 이 글을 쓰게 되었습니다. , 내 생각에는 ISVir이 날카로운 주제를 제기한 곳입니다. 즉, 상상의 지나친 복잡성으로 인해 겁을 먹지 않고 접근 가능한 언어로 초보자에게 콘솔에 대해 설명하는 방법입니다.

나는 ISVir의 패리티를 없애지 않을 것입니다. 실제 사용가장 기본적인 "일상" 유틸리티 몇 가지가 없으면 콘솔에서 작업이 불가능합니다.

그래서 우리는 무엇을 가지고 있습니까?

찾다- 파일을 검색합니다. 파일, 디렉터리, 심볼릭 링크 및 기타 파일 개체를 검색할 수 있습니다. find 다음과 같은 다양한 검색 옵션을 설정할 수 있습니다.

  • 마스크(이름)로 검색
  • 검색 중첩 깊이 제어
  • 특정 파일 형식(디렉토리, 심볼릭 링크, 소켓) 검색
  • 파일 생성/수정 시간으로 검색
  • 파일의 크기(범위 내에서 및 범위 내에서)를 설정할 수 있습니다.
  • 발견된 각 파일에 대해 작업 수행
마나에서 나머지 옵션과 매개변수에 대해 읽을 수 있습니다.

따라서 즉시 - 지난 24시간 동안 변경된 /etc/ 디렉토리의 모든 파일을 검색하십시오.

$find /etc/ -type f -mtime -1

우리가 쓴 내용을 살펴보겠습니다.

첫 번째 매개변수는 항상 검색할 시작 디렉터리입니다.
옵션 -유형매개변수 포함 에프말한다 찾다일반 파일만 검색하면 됩니다.
옵션 -m시간매개변수 포함 -1 나타내다 찾다지난 24시간 동안 변경된 파일을 찾아야 합니다.
"-" ~ 전에 1 범위의 상한을 설정합니다. 즉, "지난 24시간 동안 변경된 모든 것"

우리가 표시한 경우 "+" ~ 전에 1 , 저것 찾다 1970년 1월 1일부터 어제(하루 이상 전)까지 변경된 모든 파일을 찾습니다.
수식어 없이 숫자만 넣어서 정확한 날짜를 지정할 수도 있습니다.

발견된 파일에 대해 작업을 수행합니다.
옵션 -exec발견된 각 파일에 대해 실행할 명령이 포함된 문자열을 사용합니다.
명령에 전달된 매개변수는 다음과 같이 표시됩니다. {}
문자열은 " \; "로 끝나야 합니다.

예를 들어보자:
* /tmp 디렉토리에서 이후 변경된 모든 파일을 찾습니다. 지난 달그리고 디렉토리에 복사
/tmp/백업/

$find /tmp -type f -mtime -30 -exec cp () /tmp/backup \;

* 디렉토리에서 마지막 날에 변경된 로그라는 이름의 모든 디렉토리를 (재귀적으로) 제거합니다.
/var/www
$find /var/www -type d -mtime 0 -name 로그 -exec sudo rm -fr () \;

매개변수 옵션으로 -유형디렉토리만 검색하도록 지정합니다.
옵션 -이름이름으로 검색을 지정합니다.
여기서는 이런 방식으로 파일을 삭제하는 것이 최적이 아니라는 점을 추가할 가치가 있습니다(느림).
삭제를 위해 find에는 훨씬 더 빠른 내장 옵션인 -delete가 있습니다.

유틸리티를 고려하십시오 .
파일을 처리하도록 설계된 프로그래밍 언어입니다. 그것의 목적
개발 - 처리와 관련된 많은 문제의 공식화 및 해결을 촉진합니다. 텍스트 정보. 사실은, 콘솔에서 사용할 수 있는 유틸리티입니다.
분명한 이유로 여기서는 awk 코드 작성 기술을 고려하지 않을 것입니다. 우리에게 중요한 한 가지 기술에 대해서만 설명하겠습니다.

먼저 awk는 STDIN에서 데이터를 가져올 수 있습니다. $echo "테스트"|awk ...
둘째, awk는 콘솔에 한 줄짜리 코드를 작성하는 데 효율적입니다. 매개변수로 제공된 코드를 실행합니다.


awk는 입력 스트림을 필드로 분할하고 해당 필드를 유형 변수$1,$2,..$N
기본적으로 필드 구분 기호는 공백이지만 옵션이 있습니다. -F"_delimiter_"이는 재정의될 수 있습니다.
$head -4 /etc/passwd
루트:x:0:0:루트:/루트:/bin/bash
데몬:x:1:1:데몬:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

$cat /etc/passwd|awk -F":" "($1 인쇄)"
뿌리
악마
큰 상자

예를 들어, /var/www 디렉토리에 여러 사이트가 있습니다. 각 사이트마다 Apache 로그가 기록되는 로그 디렉터리가 있습니다.(이 사이트의 경우) 이제 우리는 이러한 로그의 총 볼륨을 알고 100Mb보다 큰 모든 로그를 찾고 싶습니다.

1. 대용량 로그 검색:

$find /var/www -type f -name "access.log*" -size +100M
/var/www/site1/logs/access.log
/var/www/site2/logs/access.log.1.gz

2. 총 로그 볼륨을 계산합니다.

/var/www/ 찾기 -type f -name "access.log*" -exec du -k () \;|awk "(s+=$1)END(print s)"
5071604


그러니 두려워하지 마세요. 지금 당장 모든 것을 설명하겠습니다 :)

Find는 마스크(access.log*)로 모든 파일을 검색하고 각각에 대해 명령을 실행합니다. .
파일 크기를 인쇄합니다. 옵션 -케이킬로바이트 단위로 출력됩니다.
그런 다음 프로세서가 시작됩니다 , 단순히 문자열(숫자)의 첫 번째 필드를 변수로 합산합니다. 에스그리고 변수의 값을 화면에 표시합니다.

또 다른 예: 시스템에서 사용자에게 속한 모든 파일과 디렉터리를 찾습니다. 테스트1그리고 총 부피를 계산해 보세요.

#find / -user test1 -exec du -sm () \;|awk "(s+=$1)END(print s)"

저것들. 여기 옵션으로 -사용자 find 사용자 test1에 속한 파일을 검색하고 각 파일/디렉토리에 대해 크기를 계산합니다(du 명령).
더 나아가 파이프라인을 통해 이 데이터는 awk에 의해 수신되고 위에서 수행한 것처럼 해당 합계를 Kb 단위로 계산합니다.

좋아요. 오늘은 이 정도면 충분할 것 같아요.
게시물이 습관적으로 꽤 크게 나왔습니다 :)

바로 말씀드리고 싶습니다. 단지 find 및 awk 사용에 대해 이야기하기 위해 목표를 설정한 것이 아니라 예를 들었습니다. 실용적인 응용 프로그램실제 상황에서.
글이 마음에 드신다면 계속 이 방향으로 글을 쓰겠습니다.

시간 내 주셔서 감사합니다.

파일 시스템에서 일부 파일을 긴급하게 찾아야 하지만 그 파일이 어디에 있는지 모르는 경우가 매우 많습니다. 그리고 파일을 찾는 GUI 유틸리티가 피곤하거나 GUI가 전혀 설치되어 있지 않거나 원칙적으로 사용하지 않는 경우 Linux에서 파일, 폴더 및 파일 일부를 검색하기 위한 광범위한 명령이 구조하다.

데이터베이스에서 이름으로 파일을 검색합니다.
찾기 명령을 사용하면 파일 이름의 일부로 파일을 검색할 수 있습니다. 이 명령은 이름 데이터베이스를 검색하고 검색된 파일의 경로를 제공합니다. -i 옵션과 함께 명령을 실행하는 것이 좋습니다. 대소문자를 구분하지 않고 검색하려면 -i를 찾으세요.
예:

subsanek@subsanek-laptop:~$ 찾기 -i .ogg
/home/subsanek/unknown - 알 수 없음/01 - 알 수 없음 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(잘림)


-명령 호출로 시스템에서 ogg 확장자를 가진 모든 파일을 찾았습니다.
찾기는 매우 빠르게 파일을 검색하지만 데이터베이스의 이름 목록만 보는 것이므로 파일이 최근 파일이라면 찾지 못할 가능성이 높습니다.
데이터베이스 업데이트.
다음 명령을 사용하여(루트로) Locate 명령의 데이터베이스를 업데이트할 수 있습니다.
업데이트됨
읽을 수 있는 출력.
종종 찾기 명령은 화면 앞에서 깜박거리고 눈에 아무런 영향을 주지 않는 수천 개의 결과를 제공할 수 있습니다. 이를 방지하려면 출력 결과를 컨테이너로 리디렉션할 수 있습니다.
-i .ogg 찾기 | 더 적은
-n 옵션을 사용하여 표시할 결과 수를 지정할 수도 있습니다.
-i .ogg -n 10 찾기
- 처음 10개의 결과를 표시합니다.

리얼스캔으로 파일을 검색해보세요.
find 명령은 파일 시스템을 스캔하여 파일을 찾기 때문에 이 도구는 느리지만 효율적입니다.
이름으로 검색하려면 -name 키를 지정해야 합니다.
예:
찾기 - 이름 파일 이름.txt
기본적으로 현재 디렉터리에서 재귀적으로 검색을 찾습니다.

텍스트 조각으로 텍스트를 검색합니다.
전설적인 grep 명령은 거의 모든 용도로 사용할 수 있습니다. 검색용으로만 사용하는 것이 아니라 원하는 파일카탈로그에 소스 코드. grep을 사용하여 정규식을 검색할 수도 있습니다.
명령 프로토타입:
grep "검색 패턴" file_to_search
예:
grep -R "텍스트" /
- 이 명령은 모든 항목을 재귀적으로 검색합니다. 텍스트 파일시스템 단어 텍스트.
Grep에는 매우 자주 필요할 수 있는 수많은 옵션이 있습니다.

subsanek@subsanek-laptop:~$ grep --help
사용법: grep [KEY]... PATTERN [FILE]...
각 FILE 또는 표준 입력에서 PATTERN을 검색합니다.
기본적으로 PATTERN은 BRE(단순 정규식)입니다.
예: grep -i "hello world" menu.h main.c

정규식 유형 선택 및 해석:
-E, --extended-regexp PATTERN - 확장 정규식(ERE)
-F, --fixed-regexp PATTERN - 고정 길이 문자열로 구분됨
상징 개행
-G, --basic-regexp PATTERN - 단순 정규식(BRE)
-P, --perl-regexp PATTERN - Perl 정규식
-e, --regexp=PATTERN 검색에 PATTERN을 사용합니다.
-f, --file=FILE FILE에서 패턴을 가져옵니다.
-i, --ignore-case 대소문자 차이를 무시합니다.
-w, --word-regexp 패턴은 모든 단어와 일치해야 합니다.
-x, --line-regexp PATTERN은 전체 줄과 일치해야 합니다.
-z, --null-data 문자열은 null 바이트로 구분됩니다.
줄 종결자

추가로:
-s, --no-messages는 오류 메시지를 억제합니다.
-v, --revert-match 일치하지 않는 행 선택
-V, --version 버전 정보를 표시하고 종료합니다.
--help 도움말을 표시하고 종료합니다.
--mmap 가능하면 메모리 매핑(mmap)을 사용합니다.

출력 관리:
-m, --max-count=지정된 NUM개 일치 후 NUM개 중지
-b, --byte-offset 인쇄 오프셋
바이트
-n, --line-number 출력 라인과 함께 라인 번호를 인쇄합니다.
--각 라인 이후의 라인 버퍼 플러시 버퍼
-H, --with-filename 각 일치 항목에 대한 파일 이름 인쇄
-h, --no-filename 파일 이름에서 출력을 시작하지 않습니다.
--label=LABEL은 LABEL을 파일 이름으로 출력합니다.
표준 입력
-o, --only-matching은 PATTERN과 일치하는 문자열 부분만 표시합니다.
-q, --quiet, --silent 모든 일반 출력을 억제합니다.
--binary-files=TYPE 바이너리 파일 유형을 고려합니다:
바이너리, 텍스트 또는 일치하지 않음.
-a, --text --binary-files=text와 동일
-저는 --binary-files=without-match와 동일합니다.
-d, --directories=ACTION 디렉토리 처리 방법
ACTION을 읽을 수 있고(읽을 수 있음),
recurse(반복적으로) 또는 건너뛰기(skip).
-D, --devices=ACTION 장치, FIFO 및 소켓을 처리하는 방법
ACTION은 '읽기' 또는 '건너뛰기'일 수 있습니다.
-R, -r, --recursive --directories=recurse와 동일
--include=F_PATTERN F_PATTERN과 일치하는 파일만 처리합니다.
--exclude=F_PATTERN 파일 및 디렉터리 건너뛰기,
F_TEMPLATE과 일치
--exclude-from=FILE 패턴과 일치하는 파일 건너뛰기
FILE의 파일
--exclude-dir=PATTERN과 일치하는 PATTERN 디렉터리,
건너뛰게 됩니다
-L, --files-without-match 일치하지 않는 FILE 이름만 인쇄합니다.
-l, --files-with-matches 일치하는 FILE 이름만 인쇄합니다.
-c, --count 일치하는 수만 인쇄합니다.
FILE당 라인
-T, --initial-tab 탭 정렬(필요한 경우)
-Z, --null FILE 이름 뒤에 바이트 0을 인쇄합니다.

컨텍스트 관리:
-B, --before-context=NUM 이전 컨텍스트의 NUM개 라인을 인쇄합니다.
-A, --after-context=NUM 후속 컨텍스트의 NUM줄을 인쇄합니다.
-C, --context[=NUM] NUM개의 컨텍스트 라인을 인쇄합니다.
--color[=언제],
--colour[=WHEN] 마커를 사용하여 일치 항목 구분
윤곽; WHEN은 항상(항상)일 수 있습니다.
절대(절대) 또는 자동(자동)
--color, --colour 마커를 사용하여 일치하는 라인을 구별합니다.
-U, --binary 줄 끝의 CR 문자를 제거하지 않음(MSDOS)
-u, --unix-byte-offset CR이 없는 것처럼 출력 오프셋(MSDOS)

egrep 대신 Grep -E를 실행해야 합니다. fgrep 대신 grep -F가 가정됩니다.
egrep 또는 fgrep으로 실행하는 것은 피하는 것이 가장 좋습니다.
FILE이 제공되지 않거나 FILE이 -이면 표준 입력을 읽습니다.
두 개 미만의 파일이 지정되면 -h가 가정됩니다. 발견되었을 때
일치하면 프로그램 종료 코드는 0이 되고 그렇지 않으면 1이 됩니다.
오류가 발생하거나 -q 옵션이 지정되지 않은 경우 종료 코드는 2입니다.

작업 시작 리눅스 서버, 사용자는 종종 필요한 파일을 찾는 문제에 직면합니다.

이 튜토리얼에서는 다양한 필터와 옵션을 사용하여 파일을 검색할 수 있는 해당 find 명령의 사용을 다룹니다. 또한 이 가이드에서는 명령을 찾는 데 사용할 수 있는 찾기 명령에 대해 간략하게 설명합니다.

파일 이름으로 검색

물론 이름으로 파일을 검색하는 것이 가장 분명한 방법필요한 파일을 찾으세요.

이렇게 하려면 다음을 사용하세요.

찾기 - 이름 "쿼리"

이 명령대소문자를 구분합니다. 즉, 다음과 같은 파일을 허용합니다. 명명된 파일및 두 개의 다른 파일로 파일).

대소문자를 구분하지 않고 이름으로 파일을 검색하려면 다음을 입력하십시오.

find -iname "쿼리"

특정 패턴과 일치하지 않는 파일을 찾으려면 -not 플래그나 "!" 메타 문자를 사용하여 검색을 반대로 하세요. "!" 사용시 주의하세요. 문자는 이스케이프되어야 합니다 배쉬 쉘"!"를 해석하지 않았습니다. find 명령이 실행되기 전에도 마찬가지입니다.

find -not -name "query_to_avoid"

찾다\! -name "query_to_avoid"

파일 형식으로 검색

"-type" 매개변수를 사용하면 유형을 지정할 수 있습니다. 필수 파일. 다음과 같이 작동합니다:

find -type type_descriptor 쿼리

다음은 파일 형식을 지정하는 데 사용할 수 있는 일반적인 설명자 목록입니다.

  • 에프: 일반 파일;
  • : 디렉토리;
  • : 심볼릭 링크;
  • : 캐릭터 장치;
  • : 장치를 차단합니다.

예를 들어 시스템의 모든 문자 장치를 찾으려면 다음 명령을 실행해야 합니다.

찾기 / -c를 입력하세요
/dev/parport0
/dev/snd/seq
/dev/snd/타이머
/dev/autofs
/dev/cpu/마이크로코드
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .

.conf로 끝나는 모든 파일을 찾으려면 다음을 사용하십시오.

찾기 / -유형 f -이름 "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .

시간 및 크기별로 필터링

find 명령을 사용하면 크기와 시간을 기준으로 결과를 필터링할 수 있습니다. 마지막 변경.

파일 크기

파일을 크기별로 필터링하려면 -size 옵션을 사용하십시오.

또한 크기를 나타내려면 값 끝에 접미사를 추가해야 합니다.

  • 씨:바이트
  • 케이:킬로바이트
  • 중:메가바이트
  • G:기가바이트
  • 비: 512바이트 블록

크기가 정확히 50바이트인 파일을 찾으려면 다음을 입력하십시오.

찾기 / -크기 50c

50바이트보다 작은 파일을 찾으려면 값 앞에 "-" 문자를 사용하십시오.

찾기 / -크기 -50c

따라서 700MB보다 큰 파일을 찾으려면 값 앞에 + 기호를 사용하십시오. 명령은 다음과 같습니다:

찾기 / -크기 +700M

시간을 기준으로 검색

Linux는 액세스 시간, 수정 시간 및 변경 시간에 대한 데이터를 저장합니다.

  • 액세스 시간: 마지막으로 파일에 액세스한 시간(파일을 읽거나 추가한 시간)
  • 수정 시간: 파일 내용이 마지막으로 수정된 시간입니다.
  • 변경 시간: 파일의 inode가 마지막으로 변경된 시간입니다.

시간별로 파일을 필터링하려면 각각 "-atime", "-mtime" 및 "-ctime" 옵션을 사용하십시오.

의미 주어진 매개변수파일이 수정된 일수를 나타냅니다. 파일 크기와 마찬가지로 - 및 + 문자를 사용하여 n일 이전 또는 이전에 수정된 파일을 가져올 수 있습니다.

즉, 내용이 1일 전에 수정된 파일을 찾으려면 다음을 사용하십시오.

1일 이내에 액세스한 파일을 표시하려면 다음을 사용하십시오.

찾기 / -atime -1

inode가 변경된 지 3일 이상 지난 파일을 찾으려면 다음을 입력하십시오.

찾기 / -ctime +3

일 대신 분을 지정하는 데 사용할 수 있는 관련 매개변수도 있습니다.

그러면 내용이 1분 전에 변경된 파일이 반환됩니다.

또한 find 명령은 파일을 비교하고 최신 파일을 출력할 수 있습니다.

찾기 / -최신 myfile

소유자 및 권한으로 검색

find 명령을 사용하면 파일에 대한 소유자 또는 권한을 기준으로 파일을 검색할 수 있습니다.

이를 위해 –user, –group, -perm 옵션이 각각 사용됩니다. 예를 들어, syslog라는 사용자가 소유한 파일을 찾으려면 다음을 입력합니다.

찾기 / -사용자 syslog

마찬가지로 섀도우 그룹에 속한 파일을 표시하려면 다음을 사용하십시오.

찾기 / -그룹 그림자

특별한 권한이 있는 파일을 검색할 수도 있습니다.

특정 권한이 있는 파일을 찾으려면 다음을 사용하세요.

찾기 / -perm 644

이 줄에는 해당 권한이 있는 모든 파일이 표시됩니다.

지정된 권한보다 크거나 같은 권한을 가진 모든 파일을 나열하려면 다음 구문을 사용하십시오.

찾기 / -perm -644

그러면 추가 권한이 있는 모든 파일(예: 744 권한이 있는 파일)이 반환됩니다.

깊이별로 파일 필터링

예제를 실행하려면 이 구역, 임시 디렉터리에 디렉터리 구조를 만듭니다. 이는 세 가지 수준의 디렉터리로 구성되어야 하며 첫 번째 수준에는 10개의 디렉터리가 있어야 합니다. 각 디렉터리(테스트 디렉터리 포함)에는 10개의 파일과 10개의 하위 디렉터리가 포함되어야 합니다.

이러한 구조를 생성하려면 다음 명령을 실행하십시오.

CD
mkdir -p ~/test/level1dir(1..10)/level2dir(1..10)/level3dir(1..10)
터치 ~/test/(file(1..10),level1dir(1..10)/(file(1..10),level2dir(1..10)/(file(1..10),level3dir( 1..10)/파일(1..10))))
CD ~/테스트

ls 및 cd 명령을 사용하여 새로 생성된 구조에 익숙해지고 모든 것이 올바르게 생성되었는지 확인합니다. 그런 다음 테스트 디렉터리 test로 돌아갑니다.

이 섹션에서는 이 구조에서 특정 디렉터리를 추출하는 방법을 보여줍니다. 시작하려면 이름으로 파일을 간단히 검색해 보세요.

찾기 - 이름 파일 1







./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1

. . .

이 명령은 상당히 방대한 결과를 생성했습니다. 이 결과를 카운터에 전달하면 최종적으로 1111개의 파일이 출력된 것을 알 수 있습니다.

찾기 - 이름 파일 1 | 화장실 -l
1111

물론 대부분의 경우 이 결론은 너무 방대하고 불편합니다. 범위를 좁혀보세요.

이를 위해 --maxlength 옵션을 사용하여 최대 검색 깊이를 설정할 수 있습니다.

찾기 -max깊이 번호 -이름 쿼리

level1 이상의 디렉터리에서 file1을 찾으려면 최대 깊이를 2로 지정합니다(최상위 디렉터리의 경우 1, level1 디렉터리의 경우 1).

찾기 -max깊이 2 -이름 파일1
./level1dir7/file1
./level1dir1/file1
./level1dir3/file1
./level1dir8/file1
./level1dir6/file1
./파일1
./level1dir2/file1
./level1dir9/file1
./level1dir4/file1
./level1dir5/file1
./level1dir10/file1

보시다시피 주어진 결과훨씬 더 편안한 모습을 가지고 있습니다.

또한 최소 검색 깊이를 지정할 수 있습니다.

find -minlength num -name 쿼리

이는 디렉터리 분기 끝에 있는 파일을 찾는 데 사용됩니다.

-minlength 4 -name 파일 찾기
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .

이번에도 이 결과에는 엄청난 수의 파일(1000개)이 포함됩니다.

최대 및 최소 검색 깊이를 결합하여 검색 범위를 줄일 수 있습니다.

-min뎁스 2 -max깊이 3 -이름 파일 찾기
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./level1dir7/file1
. . .

명령 실행 및 결합

찾기 유틸리티를 사용하면 발견된 모든 파일에 대해 보조 명령을 실행할 수 있습니다. 이는 –exec 옵션을 사용하여 수행됩니다. 기본 구문은 다음과 같습니다.

검색 옵션 찾기 -exec command_and_options () \;

기호()는 발견된 파일의 자리 표시자로 사용됩니다. 기호 \; find가 명령이 끝나는 위치를 결정할 수 있도록 사용됩니다.

예를 들어 이전 섹션과 같이 644 권한이 있는 파일을 찾아 해당 권한을 664로 변경할 수 있습니다.

CD ~/테스트
찾다. -perm 644 -exec chmod 664 () \;

그런 다음 디렉터리의 권한을 변경할 수 있습니다.

찾다. -perm 755 -exec chmod 700 () \;

여러 결과를 연결하려면 -and 또는 -or 명령을 사용하세요. -and 명령이 생략된 경우 가정됩니다.

찾다. -이름 파일1 -또는 -이름 파일9

Locate 명령으로 파일 찾기

찾기 명령은 찾기의 대안입니다. 이 명령은 일반적으로 더 빠르며 전체 파일 시스템을 쉽게 검색할 수 있습니다.

apt-get을 사용하여 이 명령을 설치할 수 있습니다.

sudo apt-get 업데이트
sudo apt-get 설치 mlocate

그런데 왜 찾기 명령이 찾기보다 더 빠를까요? 요점은 찾기가 파일 시스템의 파일 데이터베이스에 따라 달라진다는 것입니다.

일반적으로 cron 스크립트는 이 데이터베이스를 하루에 한 번 업데이트합니다. 그러나 수동으로 업데이트할 수도 있습니다. 다음 명령을 실행하세요:

기억하세요: 데이터베이스를 최신 상태로 유지하려면 정기적으로 업데이트해야 합니다. 그렇지 않으면 최근에 받거나 생성된 파일을 찾을 수 없습니다.

찾기 명령을 사용하여 파일을 찾으려면 다음 구문을 사용하면 됩니다.

결과를 필터링할 수도 있습니다.

예를 들어, 쿼리 자체가 포함된 파일만 반환하려면 쿼리로 이어지는 디렉터리에 쿼리가 포함된 모든 파일을 나열하는 대신 -b 플래그를 사용할 수 있습니다(파일의 기본 이름인 basename만 찾으려면). ):

찾기 명령이 파일 시스템에 아직 존재하는 파일(즉, 마지막 업데이트 실행과 현재 찾기 호출 사이에 삭제되지 않은 파일)만 반환하도록 하려면 -e 플래그를 사용합니다.

Locate 명령으로 카탈로그된 통계를 보려면 -S 옵션을 사용하십시오.

-S 찾기
데이터베이스 /var/lib/mlocate/mlocate.db:
디렉토리 3,315개
파일 37,228개
파일 이름 1,504,439바이트
데이터베이스 저장에 594,851바이트 사용

결과

찾기 및 찾기 명령은 UNIX와 유사한 환경에서 파일을 찾는 데 탁월한 도구입니다. 운영체제. 이러한 유틸리티 각각에는 고유한 장점이 있습니다.

찾기 및 찾기 명령은 그 자체로 매우 강력하지만 다른 명령과 결합하여 확장할 수 있습니다. 찾기 및 찾기 작업 방법을 익힌 후에는 wc, sort 및 grep 명령을 사용하여 결과를 필터링해 보세요.

태그: ,

의심할 여지없이, Linux로 작업할 때 때로는 이것이 필요할 때가 있습니다. 파일 검색특정 특성을 가지고 있습니다. 이러한 특성에는 파일의 크기나 유형, 권한 등이 있을 수 있습니다.


Linux에 명령이 있음 찾다대처하는데 많은 도움이 됩니다 파일 검색다양한 기준에 따라.


오늘 우리는 분석할 것입니다 리눅스에서 파일 검색주요 명령 옵션을 제공하십시오 찾다업무에 적용할 수 있는 것입니다.

명령 형식 찾다:

찾다-옵션

어디 검색할 디렉터리입니다. 경로에 대해 다음 값을 지정할 수 있습니다.

. - 현재 디렉토리에서 검색합니다.

/ - 루트 디렉토리에서 검색합니다.

~ - 홈 디렉토리에서 검색하세요.

옵션에 관해서는 여기에 훨씬 더 큰 목록이 있으므로 주의 깊게 읽어야 합니다(이는 앞으로 많은 도움이 될 것입니다!). 그래서, find 명령의 기본 옵션:

-이름- 주어진 템플릿을 사용하여 이름으로 파일을 검색합니다.

-사용자- 지정된 사용자에게 속한 파일을 검색합니다.

-그룹- 지정된 그룹에 속하는 파일을 검색합니다.

-파마- 지정된 액세스 모드를 사용하여 파일을 검색합니다.

-유형- 특정 유형의 파일을 검색합니다. 유형도 충분합니다.

  • b - 특수 블록 파일
  • d - 디렉토리;
  • c는 특수 문자 파일입니다.
  • f - 일반 파일
  • l - 심볼릭 링크;
  • p - 명명된 파이프;
  • s -소켓.
-sizen- 크기가 n 단위인 파일을 검색합니다.

-m시간 -n +n- 내용이 (-) 일 이내에 또는 (+) 일 전에 변경된 파일을 검색합니다.

일부를 고려해보세요 명령 사용 예 찾다 :

가장 일반적으로 사용되는 옵션은 옵션입니다. -이름, 이름으로 파일을 검색합니다.

-name 옵션의 예 :

$ /mnt/usb -name "*.mp3" 찾기 -print

/mnt/usb 디렉토리에 마운트된 USB 장치에서 확장자가 .mp3인 모든 파일(* 기호로 표시)을 검색합니다.

$ 찾기 ~ -이름 "테스트*" -인쇄

test로 시작하는 홈 디렉토리의 파일 목록을 표시합니다.

특정 문자(예: a에서 j까지)로 시작하는 파일을 찾으려면 여기에서 신청하는 것이 편리합니다. 정규 표현식사용하기가 매우 편리합니다.

$ 찾기 / -이름 "*" -인쇄

위 명령은 시스템에서 a부터 j까지의 문자로 시작하는 모든 파일을 찾습니다.

특정 액세스 모드로 파일 찾기

특정 액세스 모드가 있는 파일을 찾아야 하는 경우 다음 옵션을 사용할 수 있습니다. -파마그러면 쉽게 도움이 될 것입니다.

예를 들어, 현재 디렉터리에 있는 액세스 모드 775(소유자와 그룹은 모든 권한을 가지며 다른 사용자는 쓰기 제한이 있음)의 파일을 검색해 보겠습니다.

$ 찾다. -perm 775 -인쇄

다음으로 검색 찾다-perm 옵션을 사용하면 다른 방법을 사용할 수 있습니다. 모드 값 앞에 하이픈을 넣으면 지정된 모든 권한 비트가 설정된 파일이 검색됩니다. 또한 이 경우 나머지 비트는 무시됩니다.

예를 들어, 그룹 사용자가 전체 액세스 권한을 갖는 파일을 찾아보겠습니다.

$ 찾다. -perm -070 -print

하이픈 대신 더하기 기호를 지정할 수 있습니다. 이 경우 지정된 권한 비트 중 하나 이상이 설정된 파일을 검색합니다. 나머지 비트는 무시됩니다.

특정 사용자 또는 그룹의 파일 검색

특정 사용자의 파일을 검색하는 것은 구현이 매우 간단합니다. 이렇게 하려면 다음 명령을 실행하면 됩니다.

$ 찾기 / -사용자 관리자 -인쇄

위의 명령은 다음을 생성합니다 파일 검색관리자가 소유한 시스템에서.

특정 그룹(예: 관리자)에 속하는 파일을 찾으려면 다음 명령을 실행하십시오.

$ 찾기 / -그룹 관리자 -인쇄

존재하지 않는 사용자 또는 그룹의 파일을 검색하려면 옵션을 사용할 수 있습니다 -nouser그리고 -그룹 없음:

$ 찾기 / -nouser -print

$ 찾기 / -그룹 없음 -인쇄

특정 유형의 파일 검색

명령의 편리한 기능 중 하나 찾다, 특정 유형의 파일을 검색하는 기능입니다. 옵션 사용에 대한 옵션 고려 -유형:

/etc 디렉토리에서 심볼릭 링크 검색:

$ /etc -type l -print 찾기

/mnt/raid 디렉토리에 있는 디렉토리 목록 표시

$ 찾기 /mnt/raid -type d -print

특정 크기의 파일 검색

옵션 -크기특정 크기의 파일을 검색할 수 있으며 실행 시 다음과 같습니다.

$ 찾다. -크기 2000k -인쇄

위 명령은 현재 디렉터리에 있는 2MB 파일을 찾아 표시합니다. 예를 들어 크기가 500KB 미만인 파일을 찾아야 하는 경우 명령은 다음과 같습니다.

$ 찾다. -크기 -500k -인쇄

600MB보다 큰 파일을 찾으려면 다음 명령을 사용하십시오.

$ 찾기 / -크기 +600M -인쇄

-mtime 옵션을 사용하여 파일 검색

옵션 -m시간시간이 지남에 따라 변경된 파일을 찾을 수 있습니다.

예를 들어, 지난 5일 동안 변경된 /mnt/raid/upload 디렉터리에 있는 파일을 검색하는 작업에 직면했습니다. 이 명령은 우리에게 도움이 될 것입니다:

$ /mnt/raid/upload -mtime -5 -print 찾기

예를 들어 일주일 동안 변경되지 않은 파일을 찾기 위해 반대가 필요한 경우 다음 명령을 사용합니다.

$ 찾기 /mnt/raid/upload -7 -print

찾다극도로 편리한 도구을 위한 파일 검색또한 다음 용도로 사용할 수 있습니다. 파일 검색 NFS 드라이브(네트워크 파일 시스템), 그러나 이 경우 로컬 디스크보다 NFS에서 항목을 검색하는 데 훨씬 더 많은 시간이 소요된다는 점을 고려해야 합니다.

이 기사에서는 작업에 도움이 되는 find 명령의 기본 옵션만 다루었습니다. 편리한 것을 사용하고 사소한 일에 대해 걱정하지 마십시오!